1

シンプルな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 で発生し、マネージド/ネイティブ境界の前に処理されませんでした System.UnauthorizedAccessException: 無効なクロススレッド アクセスです。MS.Internal.XcpImports.CheckThread() で System.Windows.DependencyObject.GetValueInternal(DependencyProperty dp) で System.Windows.FrameworkElement.GetValueInternal(DependencyProperty dp) で System.Windows.Controls.ItemsControl.get_Items() で BitCoinTail.MainPage .PopulateListPicker()

奇妙なことに、このクラスの別のメンバーに単純な文字列でアクセスしようとすると、正常に動作します。私はWP7で少し開発していましたが、この例外が発生したことを思い出しません. 誰かが私が間違っていることを見ることができますか?

4

1 に答える 1

0

適切なスレッドへの呼び出しをマーシャリングするには、ディスパッチャを使用する必要があります。http://www.codeproject.com/Articles/368983/Invoking-through-the-Dispatcher-on-Windows-Phone-aを参照してください。

于 2013-02-26T22:05:41.447 に答える