C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: IPCを使ったプロセス間通信の待ち時間を無期限にしたい


(過去ログ 87 を表示中)

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■51652 / inTopicNo.1)  IPCを使ったプロセス間通信の待ち時間を無期限にしたい
  
□投稿者/ TAKE2 (1回)-(2010/07/13(Tue) 17:30:27)

分類:[C#] 

お世話になります。
同一PC内でのIPCを使ったプロセス間通信を行っています。
サーバ側の受信処理のタイムアウト時間を延ばす方法、無期限にする方法をご存じの方がいらっしゃいましたらお教え頂きたく書き込み致しました。
よろしくお願いいたします。

/// <summary>
/// プロセス間通信-受信-初期設定
/// </summary>
/// </summary>
private void InitInterprocessCommunicationRecv()
{
// IPC Channelを作成
IpcServerChannel servChannel = new IpcServerChannel(IPC_SERVER_CHANNEL_NAME);

// リモートオブジェクトを登録
ChannelServices.RegisterChannel(servChannel, true);

// イベントを登録
m_msg = new ClassFileInfo();
m_msg.OnTrance += new ClassFileInfo.CallEventHandler(m_msg_OnTrance);

RemotingServices.Marshal(m_msg, "message", typeof(ClassFileInfo));
}
/// <summary>
/// プロセス間通信-受信部
/// </summary>
/// <param name="e"></param>
void m_msg_OnTrance(ClassFileInfo.ClassFileInfoEventArg e)
{
// プロセス間通信:セルフ終了
if (e.Mode == MODE_SELF_DESTRUCTION)
{
// アプリ終了
this.EndForm();
}
}

引用返信 編集キー/
■51696 / inTopicNo.2)  Re[1]: IPCを使ったプロセス間通信の待ち時間を無期限にしたい
□投稿者/ TAKE2 (2回)-(2010/07/14(Wed) 13:40:59)
自己レスです。
見てる部分がズレていました。
事象としては共有するオブジェクトがタイムアウトになってしまっていた事が原因だったようです。
ですので共有オブジェクト側の有効期間を無期限に設定することで解決しました。

共有オブジェクト側での追加コードは以下の通りです。
----------------------------------------------------------------------
using System.Security;
using System.Security.Permissions;

/// <summary>
///  情報を引き渡すイベント引数クラスの無期限化
/// </summary>
/// <returns></returns>
[SecurityPermissionAttribute(SecurityAction.Demand, Flags = SecurityPermissionFlag.Infrastructure)]
public override Object InitializeLifetimeService()
{
    ILease lease = (ILease)base.InitializeLifetimeService();
    if (lease.CurrentState == LeaseState.Initial)
    {
        lease.InitialLeaseTime = TimeSpan.Zero;
    }
    return lease;
}
----------------------------------------------------------------------
お騒がせしました。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -