0

現在、WindowsPhoneアプリケーションでクロススレッド操作を実行するという問題が発生しました。
デフォルトのC#[Windowsフォームアプリケーション]には、「CheckForIllegalCrossThreads」というオプション/変数があります。この変数プロパティを「False」に設定すると、アプリケーションはランタイムアクション中に不正なクロススレッドをチェックしなくなります。

実際の質問:この変数は、Silverlight Windows Phoneアプリケーションプロジェクトに別の名前で存在しますか?

更新:[JonSkeetのおかげで問題は解決しました]

この問題または同様の問題を解決する方法を探している他の人の場合:[上記のように]「Dispatcher.BeginInvoke」を使用してこの問題を解決しました

Thread myThread;
public MainPage()
    {

        InitializeComponent();

        myThread = new Thread(ThreadPromt);
        myThread.Start();
    }

Private void ThreadPromt()
{
Dispatcher.BeginInvoke(deleage(
     MessageBox.Show(string.Format("Accessed from another thread: {0}", SampleLabel.Text);
     ButtonSample.Text = "Accessed from another thread...";
);
}
4

1 に答える 1

2

実際の質問: この変数は、Silverlight Windows Phone アプリケーション プロジェクトで別の名前で存在しますか?

あったとしても、使うべきではありません。値を false に設定することも、Windows フォームでは適切ではありません。

あなたの車の「低燃料」ライトが点灯したら、それを外しますか、それとも車に燃料を補給しますか? ここでも同じことが当てはまります。警告ではなく、問題を修正してください。UI スレッド以外から UI 要素に直接アクセスしないでください。Windows フォームでControl.Invoke/を使用するか、WPF/Silverlight で/を使用して、実行を UI スレッドにマーシャリングします。BeginInvokeDispatcher.InvokeBeginInvoke

于 2012-05-05T13:00:14.010 に答える