我正在开发Windows Phone 8.1应用程序,我有这个问题:
我正在尝试使用此功能调用Children.RemoveAt(0)
:
public void ReleaseMediaElement()
{
if (_gridToInjectMediaElement != null && _gridToInjectMediaElement.Children.Count > 0)
{
bool access = Dispatcher.HasThreadAccess;
if (access)
{
_gridToInjectMediaElement.Children.RemoveAt(0);
//Or : _gridToInjectMediaElement.Children.Clear();
}
else
{
Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
{
_gridToInjectMediaElement.Children.RemoveAt(0);
}).AsTask().Wait();
}
}
}
但是,当我收到Dispatcher.HasThreadAccess == true
时,我的流程会不时挂起。
我有时从UI调用此函数,有时从Worker线程调用此函数 - 这就是我尝试使用调度程序的原因。
悬而未决......
什么可能导致这种行为?