- PR -

別スレッドからコントロールを操作するときコントロール側で意識しない方法はありますか?

1
投稿者投稿内容
あぶぽん
大ベテラン
会議室デビュー日: 2005/10/20
投稿数: 205
投稿日時: 2008-02-13 15:20
開発・ターゲットOS: Windows XP Pro SP2
開発環境: Visual Studio 2005 Pro
開発言語: C#
CLR: .NET Framework 2.0

.NETプログラミングの初心者です。
C++(UNIXが主ですが)、Javaの経験は長いです。

@IT:.NET TIPS Windowsフォームで別スレッドからコントロールを操作するには? - C# VB.NET VS.NET
の記事を参考に、

マルチスレッドで動作する内部処理(非フォームという意味です)から、
フォームのコントロールを操作するプログラムを書いています。

コード:
private delegate void AppendTextDelegate(string msg);
private void DoPrint(uint id, string msg)
{
    if (InvokeRequired) {
        Invoke(new AppendTextDelegate(textBox1.AppendText), msg);
    } else {
        textBox1.AppendText(msg);
    }
}



しかし、これからフォームを大量に追加するにあたり、
すべてのフォームでマーシャリングする必要があるのかな?
と、疑問に思いました。

そんなはずはないだろうと思い、調べてみたのですが、
キーワードが分からず、なかなか、よい資料にヒットしません。

SynchronizingObjectプロパティを使うのかな。。。と思っていますが、
それが何者か、どう使うのかは分かっていません。

なにかヒントをいただけませんでしょうか。

よろしくお願いいたします。
まどか
ぬし
会議室デビュー日: 2005/09/06
投稿数: 372
お住まい・勤務地: ますのすし管区
投稿日時: 2008-02-13 17:17
#どっちにしろ、呼び出し元と先のどちらかが似たようなことをしなくちゃいけないのですが

以前、似たようなことで、
顧客にライブラリを提供する際にそれを意識させたくないという理由で同様の質問をしたスレッドです。
http://bbs.wankuma.com/index.cgi?mode=al2&namber=10883&KLOG=24

FormでClassをNewするパターンで、ClassがNewされたときのスレッドでイベントを投げるというものです。
一例ということで。
#Postなので非同期?になるのは注意。
あぶぽん
大ベテラン
会議室デビュー日: 2005/10/20
投稿数: 205
投稿日時: 2008-02-13 17:44
まどかさん、
ありがとうございます。

このスレッドを拝見する限り、標準的な方法はないようですね。

コードのほうは、VBがほぼダメな人なので、結局、解析しきれていません。。。

が、「AsyncOperationManager.CreateOperation」のキーワードで
少し先に進めそうです!

ありがとうございます<m(__)m>
1

スキルアップ/キャリアアップ(JOB@IT)