线程.开始/暂停这里/重置

本文关键字:重置 这里 暂停 线程 开始 | 更新日期: 2023-09-27 18:06:45

我一直在尝试修改别人在过去开发的应用程序…

这个应用程序做在线交易(使用c#开发的api)..基本上我有一个应用程序结构我设置了一些配置参数用户可以选择或取消选择还有开始和停止按钮

点击开始按钮,我通过传递函数创建一个线程,该函数将执行所有复制和其他操作,并将其分配给主表单类

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

和点击停止按钮…应用程序只是暂停线程

this.main_thread.Suspend()

现在应用程序停止,恢复应用程序功能的唯一方法是按开始键并重新启动线程。

作为一个新功能,我希望这个线程自动停止和重新启动。每次触及某个止损点,重新开始…但我做不到

我累的是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();
}

如何实现这个

线程.开始/暂停这里/重置

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

mrse.WaitOne()
当外部代码下次通过调用 重置

mrse.Reset()

执行将停止,线程将在

点进入睡眠状态。
mrse.WaitOne()

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

mrse.Set()