1

これはかなり面倒ですので、ご容赦ください。

私はC#が初めてなので、私の質問はばかげているかもしれません。

私が達成したいのはそのようなものです:

            private void RivalAlive()
        // The Function Should be alive for 10min - if the condition is performed then the function need to die (quit) immediately, also if the 10min has passed without the condition beeing performed the function will die.
        {
            if (SmallHour == 5) // if condition is performed it need to execute the code in the condition and quit the function
            //Run Another Function Here
            //End the RivalAlive Function
        {
        }
            //If the Condition is False - keep with the loop every 1 sec till 10min has passed
        }

どうもありがとう!

4

2 に答える 2

2

while ループを 10 分間実行し続けるのは正しくありません。代わりに、オブザーバー パターンを実装して、不要なプロセッサ サイクルを回避する必要があります。

いくつかのオブジェクトが「SmallHour」を追跡し、更新しています。そのオブジェクトは Observable オブジェクトになり、他のすべてのオブジェクトは更新に関する情報を受け取ることができるように登録されます。あなたの場合、 Observer は RivalAlive() メソッドを含むオブジェクトです。オブザーバブル オブジェクトが "SmallHour" を更新すると、リスト内のすべてのオブザーバーに通知されます。オブザーバーがその仕事を完了すると、オブザーバブルから登録を解除して「死ぬ」ことができます。

これがあなたが探しているものであることを願っています。

グーグルでオブザーバーパターンをチェックしてください。 http://msdn.microsoft.com/en-us/library/ee817669.aspx (おそらく、このリンクの例よりも優れた例があります)

編集:10分間だけチェックする必要があるという条件を忘れていました。変更のリッスンを開始した時刻を保存できます。SmallHour の更新を受信すると、10 分が経過したかどうかを確認し、それに応じて動作することができます。

于 2013-04-27T17:29:30.157 に答える