我有以下最初从 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 秒的时间。所以为了防止 UI 挂起,我决定创建一个单独的线程来处理这个问题。
这个函数也可以在短时间内被多次调用(比如 1 秒内 10 次),所以我认为我应该使用 Threadpool 而不是让后台工作人员来处理这个问题,所以我修改了我的代码,如下所示:
ThreadPool.QueueUserWorkItem(state =>
{
SetLogicBreakLineResponse response = ddcdao.SetLogicBreakLine(logicName, logicLine, flag);
});
这是使用线程池的正确方法吗?如果使用线程这么容易,我觉得我肯定做错了。此代码是否会对我的应用程序造成任何未知的巫术?