以下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