- PR -

File.Exists を別スレッド化する。

投稿者投稿内容
れい
ぬし
会議室デビュー日: 2005/11/01
投稿数: 346
投稿日時: 2008-05-23 16:45
引用:

jiioiさんの書き込み (2008-05-23 09:17) より:
やっていてふと思ったのですが、タイムアウト付きのExistsメソッドを使っても、タイムアウトするまでアプリケーションがフリーズしてしまいます。



ええ。
だからメソッド単体でのタイムアウトは必要になることはあまりありません。
なので
> いまさらですが、やっとやりたいことが理解できました。
ということになってしまいました。

引用:

Exists自体を別スレッドに任せた方がよいのでしょうか?
普通はどのように設計するものなのでしょう。
スタンダードな手法等があれば、御教授よろしくおねがいします。



残念ながら、非同期やマルチスレッドは
アプリケーションの設計の根本に影響を与えます。
簡単な方法論はなかなかありません。

Existsを含めたGUI以外の処理をすべてワーカースレッドに任す、
という設計もあります。

作業を細切れにしてTimerで処理する手もあります。

BackGroundWorkerを使ってもいいですし、

IAsyncResultを返すような非同期メソッドを自分で作ってもいいです。

どれも一長一短ですし、どれも細かい点でいろいろめんどくさいです。

とりあえず、先ほどのコードの延長で考えるなら、
WaitOneを使わず、
Timerで定期的にとか、他の操作を契機として
IAsyncResult.IsCompleteを調べ、完了をチェックするといいでしょう。

これ以上をここで説明するのは大変です。
あとは他人のソースを読んだり、MSDNを読んだりして
使いやすい方法を模索するといいと思います。

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