System.UnauthorizedAccessException:在WP8中更新ListPicker时无效的跨线程访问

时间:2013-02-26 22:03:16

标签: c# windows-phone-8

我正在构建简单的WP8应用程序。我正在尝试使用属于另一个类的成员的集合更新ListPicker控件。此类使用异步调用获取此数据。收到响应时,会在MainPage上触发更新ListPicker的事件。

    public void coinUtil_ReceivedPriceEvent(object sender, EventArgs e)
    {
        PopulateListPicker();
    }

    public void PopulateListPicker()
    {

        try
        {
            foreach (KeyValuePair<string, double> item in coinUtil.cointPriceList)
            {

                listPickerCurrencies.Items.Add(item.Key);
            }
        }
        catch (UnauthorizedAccessException ex)
        {
            System.Diagnostics.Debug.WriteLine(ex.ToString());
        }

    }

我遇到以下异常:

  

类型'System.UnauthorizedAccessException'的第一次机会异常   发生在System.Windows.ni.dll

中      

发生了'System.UnauthorizedAccessException'类型的异常   System.Windows.ni.dll并未在托管/本机之前处理   boundary System.UnauthorizedAccessException:无效的跨线程   访问。在MS.Internal.XcpImports.CheckThread()at   System.Windows.DependencyObject.GetValueInternal(的DependencyProperty   dp)at   System.Windows.FrameworkElement.GetValueInternal(的DependencyProperty   dp)在System.Windows.Controls.ItemsControl.get_Items()处   BitCoinTail.MainPage.PopulateListPicker()

奇怪的是,当我尝试使用简单的字符串访问此类的另一个成员时,它工作正常。我在WP7中开发了一点但不记得曾经遇到过这个例外。谁能看到我做错了什么?

1 个答案:

答案 0 :(得分:0)

您需要使用调度程序来调用正确的线程 - 请参阅http://www.codeproject.com/Articles/368983/Invoking-through-the-Dispatcher-on-Windows-Phone-a