xaml访问Grid导致进程挂起

时间:2015-12-29 14:50:34

标签: c# multithreading xaml dispatcher

我正在开发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线程调用此函数 - 这就是我尝试使用调度程序的原因。

悬而未决......

什么可能导致这种行为?

0 个答案:

没有答案