tag:blogger.com,1999:blog-7470090614207241613.post715590795546574416..comments2023-10-13T09:09:55.802+09:00Comments on 一矢報いる: [WPF][Silverlight][C#]UIスレッドアクセス方法ChallengeAndResponsehttp://www.blogger.com/profile/11182016383758869932noreply@blogger.comBlogger2125tag:blogger.com,1999:blog-7470090614207241613.post-59262430655170186962014-04-28T23:53:50.930+09:002014-04-28T23:53:50.930+09:00悠輔様
スレッドについての大事なご指摘、ありがとうございます!
ご指摘あって改めて読み直したらダメダ...悠輔様<br />スレッドについての大事なご指摘、ありがとうございます!<br />ご指摘あって改めて読み直したらダメダメですね。<br />もともとの意図としては、記事のタイトル通り、イベントドリブンではなくて通信などバックグラウンドで処理させているものからの通知をUIスレッドに通知する方法として Dipatcher が一般的ですが、UIスレッドで生成したTaskFactoryでも合流出来るということを言いたかっただけでしたー(言い訳)。<br />とはいえ、Task がキャンセル出来ることも碌に調べずに書いたり、ThreadPool を使わない安易なやり方で書いてしまったのは反省です。<br />近いうちに書き直しますm(_ _)mChallengeAndResponsehttps://www.blogger.com/profile/11182016383758869932noreply@blogger.comtag:blogger.com,1999:blog-7470090614207241613.post-53986171814311247502014-04-27T18:13:27.250+09:002014-04-27T18:13:27.250+09:00自分も勉強中なのですが、大事なことなので。
Threadのキャンセルも直接生成もあまりよろしくないで...自分も勉強中なのですが、大事なことなので。<br />Threadのキャンセルも直接生成もあまりよろしくないです。(OS・CPUに負担がかかるだけなのがほとんど)<br />実際にスレッド自体を利用するなら、ThreadPoolクラスを用いることがほとんどです。<br />TaskScheduler.Default()はThreadPoolを指してますので、Taskも普段はThreadPoolを使ってるわけですね。<br /><br />Taskの中断はSystem.Threading.CancelleationTokenクラス、<br />その生成・操作は(名前空間は同じ)CancellationTokenSourceクラスを利用します。<br />少々実装が面倒なのは確かですが、TPLは中断するのにこの2つのクラスを使うことを前提に設計されています。<br /><br />最後に。<br />async・awaitを勉強したらいいことが起きるかもしれないですよ。Anonymoushttps://www.blogger.com/profile/13510201393992607164noreply@blogger.com