ボタンをクリックすると、サイクルが開始され、データベースが読み取られ、クエリの各行が別のサーバーに送信されます。応答を取得すると、サイクルが継続します。
コードは次のように実装されます
private ManualResetEvent _mre = new ManualResetEvent(true);
と
Thread startUpload = new Thread(() =>
{
//read database
foreach (DataRow dr in dt.Rows)
{
//send request
_mre.WaitOne();
}
});
startUpload.Start();
問題は、リクエストが送信されたときに回答が得られない場合があることです。私の場合、これは正常です。しかし、そうでない場合は、答えが来て、サイクルが停止します。ループタイマー内で行う必要があります。応答がないためにサイクルが停止した場合、30 秒でサイクルが続行されます。
タイマーはしなければならないでしょう
_mre.Set();