私のSilverlightアプリケーションでは、実行を続ける前に複数のオブジェクトがロードを完了するのを待つ必要があります。私が使用ManualResetEventをこのように試してみました:私はObjectLoadedがトリガをbeeingていませんManualResetEvent使用するときにアプリケーションがWAITONEで立ち往生のようSilverlight複数のオブジェクトがロードされたイベントをトリガーするのを待つ
ManualResetEvent _waitHandle = new ManualResetEvent(false);
int objectsToLoad = 0;
int objectsLoaded = 0;
private void MethodA()
{
// do stuff
// count number of objects to Load and set objectsToLoad
objectsToLoad = x;
// change multiple objects interface which should trigger ObjectLoaded
// wait for all objects trigger loaded event
_waitHandle.WaitOne();
_waitHandle.Reset();
}
private void ObjectLoaded(object sender, RoutedEventArgs e)
{
objectsLoaded ++;
if (objectsToLoad == objectsLoaded)
{
objectsToLoad = 0;
objectsLoaded = 0;
_waitHandle.Set();
}
}
しかし、それはそうです。
私は間違ったアプローチを使用していますか?この問題をどのように解決すればよいですか?
問題は、私が "_waitHandle.WaitOne();"を置いた場所から実行を続ける必要があるということです。残念なことに、すべてのイベントがObjectLoadedメソッドにロードされる時期を知ることはあまり役に立ちません。 – Canastro
残念ながら、関数が完了しないようにするものは、WPFの処理を停止します。私が知る限り、この制限を回避する方法はありません。 –