[廚餘回收] 嘗試解決 SQL Server 查詢處理器無法為平行查詢的執行啟動必要的執行緒資源(The query processor could not start the necessary thread resources for parallel query execution.)的問題

這陣子我們系統的錯誤通知出現了一個沒看過的訊息:

The query processor could not start the necessary thread resources for parallel query execution.

翻成中文是「查詢處理器無法為平行查詢的執行啟動必要的執行緒資源」,簡單來說就是「資料庫很忙,執行緒不夠用。」,而且根據幾個關鍵字 ThreadParallelQuery,我們也大概能知道是平行處理的問題,知道了方向就可以開始著手調查了。

...繼續閱讀 »

[廚餘回收] 在 Windows Forms 做控制項的資料綁定後,發生「跨執行緒作業無效」的錯誤。

如果我們的 Data Source 是非同步更新的話,那麼我們就很容易收到下面的錯誤訊息。

跨執行緒作業無效: 存取控制項 'xxx' 時所使用的執行緒與建立控制項的執行緒不同。(Cross-thread operation not valid: Control 'xxx' accessed from a thread other than the thread it was created on.)

一般遇到這個情況,我們通常就是判斷 Control.InvokeRequired 屬性,然後改用 Control.Invoke()Control.BeginInvoke() 方法來修改控制項的屬性,如果是在有資料綁定的情況呢?怎麼解決這個跨執行緒的問題?

...繼續閱讀 »