0

ソフトウェアの GUI スレッドを担当しています。基になる API から常にポーリングする必要がある GridView データ内に表示する必要があります。データを更新するというメソッドを作成し、and/orSync()を使用してスレッド セーフにしようとしました。このメソッドは、約 5 秒ごとにタイマーによって呼び出されます。BeginInvokeInvokeSync

の本体がSync呼び出されることはありません。何らかの理由で、私の要求がメッセージ ポンプから取り出されないように見えるからです。コード:

 public void Sync()
    {
        if (this.InvokeRequired)
        {
            logger.Debug("Begin Invoke of Sync operation");
            this.Invoke(new SyncDelegate(Sync));
            logger.Debug("End Invoke of Sync operation");
        }
        else
        {
            logger.Debug("Inside body");
        }

    }

ログは次のようになります。

10:00:00 Begin Invoke of Sync operation
... other stuff ...
10:00:05 Begin Invoke of Sync operation
... other stuff ...
10:00:10 Begin Invoke of Sync operation

他のメッセージは印刷されません。

についても同じですBeginInvoke。「End Invoke ...」は出力されますが、「inside body ...」は出力されません。

Unity3D と MonoDevelop の上で実行しています (これで何かが変わる場合)。

4

1 に答える 1