ツリービューをセーフスレッドで使用する方法に関する情報を探しています。これを経験した人はいますか、または研究へのオンラインリンクを知っていますか.
ありがとう
ツリービューをセーフスレッドで使用する方法に関する情報を探しています。これを経験した人はいますか、または研究へのオンラインリンクを知っていますか.
ありがとう
System.Windows.Forms.TreeView に関する MSDN ドキュメントから:
この型のpublic static ( Visual Basic ではShared ) メンバーはすべて、スレッド セーフです。インスタンス メンバーは、スレッド セーフであるとは限りません。
幸いなことに、Windows フォームには、複数のスレッドからのコントロールをスレッド セーフな方法で処理するメカニズムがあります。
public delegate void TreeActionDelegate(WhatToDo details);
public void DoSomethingWithThisTree(WhatToDo details)
{
// Assuming that 'this' points to a TreeView
if (this.InvokeRequired) this.Invoke(new TreeActionDelegate(),
new object[] { details });
else
{
// The body of your function
}
}
これで、任意のスレッドからこの関数を呼び出すことができます:
DoSomethingWithThisTree(new WhatToDo("something"));
これにより、ツリーを操作するコードが TreeView を作成したスレッドで実行されることが保証されるため、スレッドセーフになります。TreeView から継承したくない場合は、treeInstance.InvokeRequired
andのみを使用できますtreeInstance.Invoke(
)。
ありがとう...
「//関数の本体」という行は、私にキックスタートを与えました。
私はいつもこの方法でGUIオブジェクトに情報を渡すだけでこれにアプローチしてきました...関数の本体全体をそこに置くとは思いもしませんでした
ありがとう
ブラッド