【发布时间】:2018-07-12 00:53:29
【问题描述】:
我确实有一个方法,它的执行时间可能需要一段时间(大约 2 分钟)在任务中运行:
public Task BaseWorkerTask { get; set; }
public void Initialize()
{
BaseWorkerTask = Task.Run(() =>
{
BaseWorker();
});
}
public void BaseWorker()
{
Server.Speak(Packet.Greeting);
while (WaitServerResponse())
{
DoSomethingElse();
}
var response = Server.GetResponse();
if (response.Equals("abc"))
{
DoAbcTask();
}
else if (response.Equals("def"))
{
[...]
}
[...]
}
我希望能够在给定的时间段内中断它的执行,以便进行其他一些服务器调用。这里需要注意的重要一点是,我希望它在 BaseWorker 方法的当前行“暂停”脚本执行,就在它所在的位置。
类似:
if (!BaseWorkerTask.IsCompleted)
{
// Pause to do something else
// BaseWorkerTask.StopAtCurrentPlace();
DoSomethingElse();
// Once something else is done, resume BaseWorkerTask
// BaseWorkerTask.Resume();
}
这样的方法可以实现吗?
我一直在尝试阻塞线程,但是只有在方法完成使用System.Threading.Thread.Sleep(...) 的无限循环后,我才能阻塞它。
【问题讨论】:
-
看看
ManualResetEvent- msdn.microsoft.com/de-de/library/…
标签: c# multithreading methods task