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);
});
それは Threadpool を使用する適切な方法ですか? スレッドがこんなに簡単に使えるとしたら、私は間違いなく何か間違ったことをしているような気がします。このコードは、アプリケーションに未知のブードゥーを引き起こしますか?