私たちはアプリケーションでTaskを使用しています。あるクラスでは、並列タスクで実行されている更新をトリガーしたいと考えています。呼び出しは次のようになります。SpinWait.SpinUntilに代わり
Maintenance.RecievedMessage += new NotificationHandler(Maintenance_RecievedMessage);
Maintenance.checkLastXML = false;
Maintenance.NeedToUpdateFromCarrier(userId);
SpinWait.SpinUntil(() => isCompleted == true);
return true;
だから我々はMaintenance.NeedToUpdateFromCarrier(USERID)トリガーされるイベントをフックアップ。 方法が実行されています。完全な方法は次のようになります。
private void Maintenance_RecievedMessage(IsCompleted changeargs)
{
isCompleted = true;
}
だから我々はすぐにそれはそれを行うことをイベントをトリガーに行われますよう、NeedToUpdateFromCarrier方法を待っている、と私たちはイベントをキャッチし、真の、そしてthatsのにプロパティisCompleteを設定しますSpinWait.SpinUntil finnalyが完了したときに、私たちは続行します。
SpinWait.SpinUntilはCPUにとって非常に重いので、私は今この問題の代替ソリューションを探しています。
このようにする理由がわからない場合は、フォーク/結合パターンを使用できませんか? – gjvdkamp
どのように機能しますか?リンクがありますか?私の主な目標は、正しいものが真実であるのを待つこと、そして続けることです。 – Fore
http://msdn.microsoft.com/en-us/magazine/cc163340.aspx#S7ただし、状況は正確ですか?中央のキューなどに書き込むタスクがたくさんありますか?あなたがしたいことではっきりしない。 – gjvdkamp