- PR -

Pingクラスの例外エラーが出る問題

1
投稿者投稿内容
daikoku
常連さん
会議室デビュー日: 2005/09/22
投稿数: 21
投稿日時: 2008-01-09 09:50
いつもお世話になっています。
質問させて頂きます。

開発環境は以下の通りです。
OS:XP SP2
開発環境:Visual Studio 2005
開発言語:C#

現在、ネットワーク上にPCが存在するかどうかを
チェックする機能を実装する目的で
.NET Framework2.0から新しく追加されたPingクラス
のSendメソッドを使用しています。

下記が実際のコードです。
***********************************************
Ping ins_Ping = new Ping();
string host = "PC_NAME";
int timeout = 100;
try
{
PingReply ins_PingReply = ins_Ping.Send(host, timeout);
if (ins_PingReply.Status != IPStatus.Success)
{
// 失敗
}
else
{
// 成功
}
}
catch (PingException ins_PingEx)
{
  // 例外処理
}
***********************************************

とりあえず問題無く動作はしているのですが
数時間に1回程の頻度で6行目のSendメソッドが
例外エラーとなります。

そこでPingExceptionでメッセージを取得してみました。
【ins_PingEx.Message】
 Ping 要求実行中に例外が発生しました。
【ins_PingEx.InnerException.Message】
 保護されているメモリに読み取りまたは書き込み操作を行おうとしました。
 他のメモリが壊れていることが考えられます。

InnerExceptionにメッセージが上がってきているということから
PingクラスのSendメソッドの処理で使用している別のクラスで
例外が起きているのではないかと考えています。

とくに改善方法を見出せずにいますが
検証として、Debugモードでビルドして動作させると
発生しずらいことはわかりました。


同様の経験をした方いらっしゃいましたら
原因、回避方法などご教授頂けないでしょうか。
宜しくお願い致します。
れい
ぬし
会議室デビュー日: 2005/11/01
投稿数: 346
投稿日時: 2008-01-09 10:22
ちょっと気になったので検証してます。
無限ループでまわして今のところエラーは出ていません。
まだ30分程度ですが。

どの程度の頻度でpingしていますか?
daikoku
常連さん
会議室デビュー日: 2005/09/22
投稿数: 21
投稿日時: 2008-01-09 13:06
>れいさん
回答ありがとうございます。
今はタイマーで1秒周期で行っています。

頻度としては、今のところ3時間以内には
出てる感じです。

1

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