会社の動きをタイムリークロスの不正のスレッドの操作例外?

StackOverflow https://stackoverflow.com/questions/1994

  •  08-06-2019
  •  | 
  •  

質問

ときにデータを結合するクライアントまで、フルのC#のスレッドに変化するデータの管理に変更。だがこのスレッドは、制御ただの不断のスレッド動作します。

直しとかは出来ないんですかこれを防ぐために?

正しい解決策はありません

他のヒント

対応することができるでしょう次のように:

if (control.InvokeRequired)
{
    control.Invoke(delegateWithMyCode);
}
else
{
    delegateWithMyCode();
}

InvokeRequiredは財産のプログラムの作成をさせていただき、正しいスレッドを呼び出しが呼び出すメソッドに委譲の正しいthread.

更新:実は、私の最後の仕事をしたもののようになります:

private void SomeEventHandler(Object someParam)
{
    if (this.InvokeRequired)
    {
        this.Invoke(new SomeEventHandlerDelegate(SomeEventHandler), someParam);
    }

    // Regular handling code
}

を除去する必要性は、他のブロックの種類や引き締めのコードです。

として持っていないテストケースになっていくことになるでしょうかを保証するソリューションがそのためのシナリオと同様に更新するのに使進捗バーの異なるスレッドを使用代理人)が適しているという。

public delegate void DataBindDelegate();
public DataBindDelegate BindData = new DataBindDelegate(DoDataBind);

public void DoDataBind()
{
    DataBind();
}

データが得られない場合には結合に必要により、特定のスレッド、そしてこのスレッドだ!

場合、スレッド呼び出しは"違法"(のDataBindを呼影響制御に作成されていない、スレッドで呼び出しを作成する必要があります委譲する場合においても決定/にDataBindするものではない、制作のスレッドは、その変更したり、DataBind())となります。

呼び出すとよいでしょう自分のコードからの労働者のスレッドはこのように:

this.BindData.Invoke();

このことはその原因となる独自のスレッドの結合、仮にそのスレッドを作成したコントロールすべきます。

にコンポーネントのラインナップとトのbindingのインフラのスイッチングのUI。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top