我有以下的功能,最初被從UI(主)的線程調用:使用線程池適當
private void BreakToggle(int line, Boolean toggle)
{
string flag;
if (toggle)
{
flag = "0"; //Add
}
else
{
flag = "1"; //Delete
}
string logicLine = line.ToString();
SetLogicBreakLineResponse response = ddcdao.SetLogicBreakLine(logicName, logicLine, flag);
}
然而,底線試圖建立與電子裝置連接併發送一個信號,該信號如果連接速度慢,可能需要5秒鐘。所以爲了防止用戶界面掛起,我決定做一個單獨的線程來處理這個問題。
這個函數也可以在很短的時間內被調用很多次(比如1秒內的10次),所以我想通過使用Threadpool來代替背景工作,所以我修改了我的代碼像這樣:
ThreadPool.QueueUserWorkItem(state =>
{
SetLogicBreakLineResponse response = ddcdao.SetLogicBreakLine(logicName, logicLine, flag);
});
這是使用Threadpool的正確方法嗎?如果使用線程很簡單,我覺得我肯定做錯了什麼。此代碼是否會導致我的應用程序出現任何未知的伏都教?
它看起來像是放棄了迴應。這是你的意圖嗎?如果多次撥打電話,訂單或對設備的呼叫很重要? – rene