线程...开始/暂停..set / reset

时间:2015-08-06 14:31:02

标签: c# .net multithreading manualresetevent

我一直在尝试修改其他人在过去开发的应用程序......

这个应用程序进行在线交易(使用为C#开发的api)..所以基本上我有应用程序结构,我设置了几个配置参数,用户可以检查或取消选中,并有开始和停止按钮

点击开始按钮..我正在通过传递函数创建一个线程,该函数将执行所有aping和其他内容并将其分配给主表单类

betbot _mybot = this; # mybot is form class
this.main_thread = new Thread(new ThreadStart(_mybot.aping_function);
this.main_thread.Start();

点击停止按钮,,, app就是暂停线程

this.main_thread.Suspend()

现在应用程序停止,只有恢复应用程序功能(aping)的方法是按开始按钮并重新启动线程..

作为一项新功能,我希望这个线程能够自动停止并重新启动..每次都会遇到一定的止损并重新开始...但我无法做到这一点

我厌倦了 ManualResetEvent ,如下所示

private static ManualResetEvent mrse = new ManualResetEvent(true); 

当某个事件在aping_function方法中匹配时,我会执行mrse.reset()和mrse.set()..但这似乎没有效果(没有完全重启)

if (stop_loss_condition_met)
{
   this.Print1("Bot Is stopped Automatically");
   mrse.Reset();
   this.Print1("Bot Is re-started Automatically");
   mrse.Set();
}

我怎样才能实现这个目标

1 个答案:

答案 0 :(得分:0)

您应该在工作线程停止的位置添加WaitOne方法的调用。

mrse.WaitOne()

下次外部代码通过调用重置它

mrse.Reset()

执行将停止,线程将在

点进入休眠状态
mrse.WaitOne()

直到外部代码调用ManualResetEvent的Set方法

mrse.Set()