C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[6]: スレッド指定のイベント発生


(過去ログ 24 を表示中)

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■10883 / inTopicNo.1)  スレッド指定のイベント発生
  
□投稿者/ まどか (409回)-(2007/11/29(Thu) 16:30:14)

分類:[VB.NET/VB2005] 

オブジェクトの中にはNewしたときとは別のスレッドでイベントを発生させてくるものがあります。
そのオブジェクトのラッパクラスにそのイベントのラッパイベントを実装する場合に
ラッパクラスがNewされたときのスレッドでRaiseEventをしようとしています。

------------------------------------------------------------
A オブジェクトがEventAを持っており別スレッドで投げてくる。

Public Class ALapper
Public Event MyEvent()
Private Sub aaa() Handles A.EventA
RaiseEvent MyEvent() *1
End Sub
End Class

*1 ALapperがNewされたときのスレッド、つまり親スレッドでイベントを発生させたい。
------------------------------------------------------------

で、ALapperを使うのはFormではありません。

Framework3.0ではSystem.Windows.Threading.Dispatcherが使えそうですが
Framework2.0ではどのような方法になるのでしょうか?

#使うほうがInvokeRequiredで判断、というのは無しでお願いします。
引用返信 編集キー/
■10884 / inTopicNo.2)  Re[1]: スレッド指定のイベント発生
□投稿者/ まどか (410回)-(2007/11/29(Thu) 16:36:30)
ん、ISynchronizeInvokeインターフェース・・・・・か?
引用返信 編集キー/
■10885 / inTopicNo.3)  Re[2]: スレッド指定のイベント発生
□投稿者/ れい (250回)-(2007/11/29(Thu) 16:44:26)
2007/11/29(Thu) 16:49:49 編集(投稿者)

えーと、

> そのオブジェクトのラッパクラスにそのイベントのラッパイベントを実装する場合に
> ラッパクラスがNewされたときのスレッドでRaiseEventをしようとしています。

Newされたときのスレッドに、
いつRaiseEventしたいのですか?

Newしてる最中なら普通に同期オブジェクトで待てばいいとおもいますが。
そうでないなら、ちょっとめんどくさいですよね。

AsyncOperationとかSynchronizationContextでするんでしょうね。

引用返信 編集キー/
■10886 / inTopicNo.4)  Re[3]: スレッド指定のイベント発生
□投稿者/ れい (251回)-(2007/11/29(Thu) 16:51:54)
No10885 (れい さん) に返信
> AsyncOperationとかSynchronizationContextでするんでしょうね。

でもめんどくさいから私なら
> #使うほうがInvokeRequiredで判断、
かな。

引用返信 編集キー/
■10888 / inTopicNo.5)  Re[4]: スレッド指定のイベント発生
□投稿者/ まどか (411回)-(2007/11/29(Thu) 17:40:43)
こんな感じですかね?
#とりあえず動いたようですが。

Public Class EventRaiser

Private _EventAsyncOp As ComponentModel.AsyncOperation

Public Sub New()

_EventAsyncOp = ComponentModel.AsyncOperationManager.CreateOperation(Me)

End Sub

Public Event Event1()

Protected Sub OnEvent1()
RaiseEvent Event1()
End Sub

Private Sub OnEvent1Callback(ByVal state As Object)
OnEvent1()
End Sub

Private Sub AnotherThreadEventReceived() Handles OtherObject.Event1

Dim srcb As New Threading.SendOrPostCallback(AddressOf OnEvent1Callback)

_EventAsyncOp.Post(srcb, Nothing)

End Sub

End Class

引用返信 編集キー/
■10889 / inTopicNo.6)  Re[5]: スレッド指定のイベント発生
□投稿者/ れい (252回)-(2007/11/29(Thu) 18:10:07)
No10888 (まどか さん) に返信
> こんな感じですかね?

まぁそんな感じかと。

でもこれって突き詰めると
BackgroundWorkerですね。
引用返信 編集キー/
■10891 / inTopicNo.7)  Re[6]: スレッド指定のイベント発生
□投稿者/ まどか (412回)-(2007/11/29(Thu) 20:02:06)
No10889 (れい さん) に返信
> ■No10888 (まどか さん) に返信
>>こんな感じですかね?
>
> まぁそんな感じかと。
>
> でもこれって突き詰めると
> BackgroundWorkerですね。
引用返信 編集キー/
■10892 / inTopicNo.8)  Re[6]: スレッド指定のイベント発生
□投稿者/ まどか (413回)-(2007/11/29(Thu) 20:03:49)
> でもこれって突き詰めると
> BackgroundWorkerですね。

あぁ、そうですね。

ユーザー(顧客)へ公開するクラスにこの手のがありますんで
この方式にするかもです。

ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -