我有以下的功能,最初被从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