3
私はシングルトンクラスと別のクラス(クラスb)から設定されたプロパティを持っていますが、問題はありません。私はシングルトンクラスのプロパティが真になるまで、別のクラス(クラスa)を無期限に待たせたい。私はこれを可能にする最も効率的な方法を望んでいるので、私はタスクが理想的だと感じましたが、効果的にすべての作品をまとめることはできません。私はpoll.sleepをポーリングし、スリープし続けたいとは思わない。別のクラスのタスクを待っています
public class A
{
public static void Main(string[] args)
{
if(!Monitor.Instance.HasChanged)
{
//await until the task in the Monitor class is complete
}
}
}
public class Monitor
{
private static Monitor instance;
private bool _hasChanged;
private Monitor() { }
public static Monitor Instance
{
get
{
if (instance == null)
{
instance = new Monitor();
}
return instance;
}
}
public bool HasChanged
{
get
{
return _hasChanged;
}
set
{
_hasChanged = value;
if (_hasChanged)
{
//kick off a task
}
}
}
}
public class B
{
private static readonly Monitor _instance;
public void DoSomething()
{
Monitor.Instance.HasChanged = true;
}
}
ありがとう、私は明日これを確認します。私は本当に専門家ではないので、最後の質問が1つあります。 コンシューマは現在非同期メソッドではないため、問題が発生しています。メソッドを非同期にするのは簡単でしょうが、以前は非同期メソッドとして使用していた呼び出し元に影響しますか? – Roka
@Roka通常は、コールチェーン全体を待っています。同期待機を望むなら、 'Task.Wait'は問題ありませんが、変数を変更しようとしているものをブロックしている可能性があることに注意してください。 – BradleyDotNET