我一直在尝试修改其他人在过去开发的应用程序......
这个应用程序进行在线交易(使用为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();
}
我怎样才能实现这个目标
答案 0 :(得分:0)
您应该在工作线程停止的位置添加WaitOne方法的调用。
mrse.WaitOne()
下次外部代码通过调用重置它
mrse.Reset()
执行将停止,线程将在
点进入休眠状态mrse.WaitOne()
直到外部代码调用ManualResetEvent的Set方法
mrse.Set()