The project of U-WA-
http://uwa.potetihouse.com/
トップページ > 過去ログ > 記事閲覧
アイコン TKMPの例外
日時: 2010/07/28 11:48
名前: ぼん

TKMPを使用していると、時々下記のような例外が発生します。(アプリケーションはクラッシュします)
TKMPのクラスを使用する部分は全て
Try
TKMP do something...
Catch ex As Exception
End Try
のようにしています。

どのように対処すればよいのでしょうか?

環境は、
OS:windows XP SP3
TKMP.dll:2.4.19.2
言語:Visual Basic 2010 Express
です。

以下、イベントビューワーからの抜粋です。
イベントの種類: エラー
イベント ソース: .NET Runtime
イベント カテゴリ: なし
イベント ID: 1026
フレームワークのバージョン: v4.0.30319
説明: ハンドルされない例外のため、プロセスが中止されました。
例外情報: TKMP.Net.
スタック:
場所 TKMP.Pop.Command. . (System.String, System.String)
場所 TKMP.Pop.Command.(=. ()
場所 TKMP.Pop.Command. . (System.IO.Stream, Int32)
場所 TKMP.Pop. .)()
場所 System.Threading.ThreadHelper.ThreadStart_Context(System.Object)
場所 System.Threading.ExecutionContext.runTryCode(System.Object)
場所 System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode, CleanupCode, System.Object)
場所 System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
場所 System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
場所 System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
場所 System.Threading.ThreadHelper.ThreadStart()

Page: 1 |

ファイル Re: TKMPの例外 ( No.1 )
日時: 2010/07/31 01:17
名前: Toki◆pRU.c9X.EOI

例外はライブラリ内のスレッドで行っている受信処理時の
通信タイムアウトを示していました。
このため、try〜では例外を捕捉出来ません。

通信タイムアウトの時間を多めにしてみてください。

アプリケーションはクラッシュはライブラリとして問題があるので、
修正したいと思います。
ファイル Re: TKMPの例外 ( No.2 )
日時: 2010/08/04 12:57
名前: ぼん

回答ありがとうございます。

以下のように修正してみました。

'POPクライアントクラスの定義
PopClient = New TKMP.Net.PopClient(bp, pop_server, Port)
' タイムアウトインターバルの設定(デフォルトは20秒)
PopClient.TimeOutInterval = 60

かならず、例外が発生するというわけではないので、しばらくこれでテストしてみます。


この値の最適値はいくつになるのでしょうか?
ファイル Re: TKMPの例外 ( No.3 )
日時: 2010/08/20 14:06
名前: ぼん

修正した後のテスト結果の報告です。

PopClient.TimeOutInterval = 60
では、例外が発生しなくなるレベルまでにはなりませんでした。
(頻度は半分くらいになっているので、確かに効果はあるようなのですが)

PopClient.TimeOutInterval = 180
として、再度テストしてみます。

ファイル Re: TKMPの例外 ( No.4 )
日時: 2012/06/01 16:37
名前: ぼん

例外は発生しなくなったのですがアプリケーションが暴走するようになりました。
(タスクマネージャーで「応答なし」になり、そのままの状態です)
GMailでSSL接続しているのですが、なかなか原因がつかめませんでした。

最終的には、TKMPをやめて自作したのですがSystem.Net.Security.SslStreamクラスのread()時に
connectionが閉じられてしまっている場合が発生しているようです。
(これはタイムアウトの指定をすることで、例外を検出できました)
TKMPでもタイムアウトの指定ができるので同様に例外を検出できると思い込んでいました。

以下、自作ソースの抜粋です。

client = New System.Net.Sockets.TcpClient
client.Connect(server, port)
client.ReceiveTimeout = 60 * 1000
client.SendTimeout = 10 * 1000
' 通信開始(SSL有り)
stream = New System.Net.Security.SslStream(client.GetStream())
....
Try
Do
ReDim buff(buff_size+1)
l = stream.Read(buff, 0, buff_size)
.....
Loop While (.....)
Catch ex As Exception
End Try

現在は、これで対応しています。
暴走するのも収まっています。

Page: 1 |