2017-08-19 6 views
0

私は起動時に静的なプロパティの値を必要とするいくつかのエントリポイントを自分のコードに持っています。または、必要に応じて機能することができます。私が立ち往生している部分は、彼らがほぼ同じ時間にこの関数を呼び出すということです。コードを一度実行するだけです。これはWebサービスへの呼び出しで、結果にはすべての呼び出し元に必要な状態が示されます。ですから、呼び出された単一の関数の結果を待つために、複数のプロセスを取得するにはどうすればよいですか。私はコード内の複数の場所からどのように待っているのか分かりません。あなたはこれができますか?C#複数のプロセスは静的なプロパティを待っています

+0

同期ロックを参照してください。https://stackoverflow.com/questions/18992965/lock-code-section-in-c-sharp –

+0

これは、独立したリソースをロックする複数のプロセス用です。共有リソース(この場合は静的な値)があります。 – Jowe

答えて

0

あなたはawaitと同じTaskが無限に頻繁に許可されます。例:

public static readonly Task<int> MyValue = GetMyValue(); 

private static async Task<int> GetMyValue() 
{ 
    return await GetItFromWherever(); 
} 

そしてあなたがそれを必要なとき:それは利用できるようにされるまで

int myValue = await MyValue; 

すべての発信者は、それが得られますときに、彼らは続けるよ、待っています。その後、この行は常に同期して実行され、すでに取得された値が使用されます。

Lazy<T>link)もチェックしてください。

関連する問題