-1

既存の VB6 ActiveX exe をレプリケートするという観点から、単純な C# リモート サーバー/クライアントを作成しました。

クライアントは、サーバーでアクティブ化されたシングルトン オブジェクトを正しく作成します。このオブジェクトは、Count という 1 つのプロパティしか持たない非常に単純なものです。実行する各クライアントは、オブジェクトを作成し、そのカウントをインクリメントします。

Simple - 複数のクライアントがそれぞれ同じ Simpleton オブジェクトで動作しており、Count プロパティをそれぞれインクリメントできます。

ただし... クライアントを一定時間 (たとえば、数分間) 開いたままにしておくと、クライアントがオブジェクトの Count プロパティをインクリメントすると、すべてのクライアントで突然 Count プロパティがゼロに初期化されます。オブジェクトが一度だけサーバーから取得されるにもかかわらず、リモート オブジェクトが破棄されて再作成されたかのように、つまりクライアントが開いたときに発生します。

どんな考えでも感謝します、

ありがとうMM

4

1 に答える 1

1

リモート オブジェクトの有効期間をオーバーライドする必要があると思います。

public override object InitializeLifetimeService()
    {
        return null; //remote object lease time forever
    }

それを MarshalByRefObject を継承するクラスに配置します

于 2013-11-07T11:41:15.143 に答える