DOBON.NET DOBON.NETプログラミング掲示板過去ログ

スレッドのキャンセル処理

環境/言語:[XP .NET Framework1.1]
分類:[.NET]

教えてください。
スレッド処理内で「StreamReader」を使っているのですが
処理をキャンセルした場合に
Thread.Abort()
Thread.Join()
と、行っていますが
「StreamReader」が終了しておらず、次に「StreamReader」で開いたファイルを
削除しようとしたら使用中としてエラーになります。
スレッドの中では「StreamReader」の後にCloseを行っています。
それと「Finally」にもCloseを記述しています。
どうやったら使用中が解除できるのかを教えてください
Closeしていれば「使用中」にはならないと思うのですが・・・
Finally中にCloseを記述しているというのは、スレッドの中のことですよね?
Closeの行にブレークポイントを設定してデバッグ実行し、
Closeが行われていることを確認してみましたか?
■No4243に返信(NowhereManさんの記事)
> Closeしていれば「使用中」にはならないと思うのですが・・・
> Finally中にCloseを記述しているというのは、スレッドの中のことですよね?
そうです。

> Closeの行にブレークポイントを設定してデバッグ実行し、
> Closeが行われていることを確認してみましたか?
ええ、「Console.WriteLine」でOpen,Closeが行われているのを確認しました。

ただ、「StreamReader」を何度も再利用しているのですがそれがいけないのかなぁ・・・。
でもOpen,Closeは交互に行われてます。う〜ん・・・
>次に「StreamReader」で開いたファイルを
> 削除しようとしたら

まさかと思いますが、削除するときにファイルを開いていませんよね。
失礼な質問かもしれませんが、そのように読み取れたので。
> まさかと思いますが、削除するときにファイルを開いていませんよね。
> 失礼な質問かもしれませんが、そのように読み取れたので。
はい、してないです。スレッドで使用したファイルを削除するって意味です^^

完全にPGを疑っているのですが単純に上から下に流れる処理なので
Closeをきちっと行っているんですよね・・・。

時間もないので仕様を変更して解決させました。
すっきりしない結末で・・・。

ご返事くださったかたありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板