如何在继续编译其他代码段之前等待信号
我可以等待来自事件的信号,以便在我接收信号时只能继续下一个代码段。如何在继续编译其他代码段之前等待信号
对于这就很清楚,我都有以下代码:
hiddenMediaElement.Source = new Uri(strMediaFileName, UriKind.RelativeOrAbsolute);          hiddenMediaElement.MediaFailed += (obj, Sender) => 
          { 
           bMediaError = true; 
          }; 
         if (!bMediaError) 
         { 
          ObjChildMediaPlayer.Visibility = Visibility.Visible; 
          ObjChildMediaPlayer._currenTitle = strTitle; 
          ObjChildMediaPlayer.Show(); 
          Content_FullScreenChanged(null, null); 
         } 
这里的问题是,如果条件的MediaFailed事件之前执行。但我想等待mediaFailed事件执行1st,然后if条件,我不想在这里使用事件。
我怎么能等待相同的。我可以使用互斥体或类似的东西吗?
回答:
把你的代码在事件处理程序:
hiddenMediaElement.Source = new Uri(strMediaFileName, UriKind.RelativeOrAbsolute); hiddenMediaElement.MediaFailed += (obj, Sender) => 
{ 
    ObjChildMediaPlayer.Visibility = Visibility.Visible; 
    ObjChildMediaPlayer._currenTitle = strTitle; 
    ObjChildMediaPlayer.Show(); 
    Content_FullScreenChanged(null, null); 
}; 
回答:
可以使用的AutoResetEvent来处理这种情况。但我肯定会尝试找到另一种方式,如果有的话。
var autoResetEvent = new AutoResetEvent(false); hiddenMediaElement.Source =新URI(strMediaFileName,UriKind.RelativeOrAbsolute); hiddenMediaElement.MediaFailed + =(obj,Sender)=> { bMediaError = true; autoResetEvent.Set(); }; hiddenMediaElement.MediaOpened + =(obj,Sender)=> {
 //我认为这发生在成功时。否则将它放在处理成功的处理程序中 autoResetEvent.Set(); };
 autoResetEvent.WaitOne(); // set a timeout value         if (!bMediaError) 
        { 
         ObjChildMediaPlayer.Visibility = Visibility.Visible; 
         ObjChildMediaPlayer._currenTitle = strTitle; 
         ObjChildMediaPlayer.Show(); 
         Content_FullScreenChanged(null, null); 
        } 
或...我不确定这是否可行,但可以试用。
hiddenMediaElement.Source = new Uri(strMediaFileName, UriKind.RelativeOrAbsolute);      hiddenMediaElement.MediaOpened += (obj, sender) => 
         { 
      ObjChildMediaPlayer.Visibility = Visibility.Visible; 
          ObjChildMediaPlayer._currenTitle = strTitle; 
          ObjChildMediaPlayer.Show(); 
          Content_FullScreenChanged(null, null); 
         }; 
以上是 如何在继续编译其他代码段之前等待信号 的全部内容, 来源链接: utcz.com/qa/261126.html


