0

過去に他社が開発したアプリを改造しようとしている...

このアプリはオンライン取引を行います (C# 用に開発された API を使用します)。基本的に、ユーザーがチェックまたはチェック解除できるいくつかの構成パラメーターを設定し、開始および停止ボタンがあるアプリ構造を持っています。

スタートボタンをクリックすると..私はすべてのapingやその他のものを実行する関数を渡し、それをメインフォームクラスに割り当てることでスレッドを作成しています

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()

アプリが停止し、アプリの機能 (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();
}

どうすればこれを達成できますか

4

1 に答える 1

0

ワーカー スレッドを停止する場所に WaitOne メソッドの呼び出しを追加する必要があります。

mrse.WaitOne()

次に外部コードが呼び出しによってリセットしたとき

mrse.Reset()

実行は停止され、スレッドはポイントでスリープ状態になります

mrse.WaitOne()

外部コードが ManualResetEvent の Set メソッドを呼び出すまで

mrse.Set()
于 2015-08-06T14:40:01.917 に答える