以下VB.NET代码使用Newtonsoft JSON.NET图书馆和一个按钮单击事件处理程序,并执行块UI线程:JsonConvert.DeserializeObject块UI线程
Dim table As DataTable =
Await Task.Factory.StartNew(Function() JsonConvert.DeserializeObject(of DataTable)(result))
我试着用不同的语法(Task.Run等),但它仍然阻塞UI线程。这里使用的正确语法是什么?
编辑:事实证明,当为DataGridView UI组件设置DataSource时,UI实际上是阻塞的。 DataTable中只有500条记录用于填充DataGridView。为什么UI执行此任务时阻塞,即
Dim dv As DataView = table.DefaultView
DataGridView1.DataSource = dv
感谢
这似乎是正确的有比电话,可能是导致块更多的代码? – DoomVroom
@DoomVroom有可能会造成运行但Windows窗体的代码是一个插件类的大型Windows应用程序 - 内运行内部执行块会不会是客户端应用程序以某种方式阻止插件没有其他代码类创建新线程?我将如何去检测?谢谢! –
在我使用JsonConvert的过程中,不需要很长时间。我不知道你要转换多大的表格。我可能会模拟一个测试反序列化你的数据表。只需对表进行单元测试,然后反序列化以查看需要多长时间。看看测试是否符合你的期望。我也假设你在你的函数中也使用了Async,因为你的代码没有声明它。 – DoomVroom