当我单击按钮时,循环开始读取数据库并将查询的每一行发送到另一台服务器。得到回应 - 循环继续。
代码实现如下
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();
答案 0 :(得分:2)
重要提示:您将ManualResetEvent
初始状态设置为true
,如果您愿意停止当前进程并等待,请将其设置为false
对于信号。
修改强>
实施例
private ManualResetEvent _mre = new ManualResetEvent(false);
private void ReadTheDatabase()
{
Thread startUpload = new Thread(() =>
{
// Read the data
foreach (DataRow dr in dt.Rows)
{
// Send request
Thread requestMethod = new Thread(() =>
{
// Imitate process with thread sleep
Thread.Sleep(5000);
_mre.Set();
});
requestMethod.Start();
_mre.WaitOne(30000, false);
}
});
startUpload.Start();
}