1

コンソール アプリケーションではなく、Windows フォームで DDE サーバーを登録する必要があります。Windows フォーム アプリケーションのさまざまなポイントで登録コードを試しましたが、登録されていないようです。frmMain と Program.cs Main() で試しました。

DDE サーバーにアクセスしようとすると、標準の接続不可メッセージが表示されます:「MainForm_Load: クライアントは "CRMIntegrator|myservice" に接続できませんでした。サーバー アプリケーションが実行中で、指定されたサービス名とトピック名をサポートしていることを確認してください。ペア。"

ここに私の登録コードがあります:

public partial class frmMain : Form
    {
        public frmMain()
        {
            InitializeComponent();
            try
            {
                // Create a server that will register the service name 'myapp'.
                using (DdeServer server = new MyServer("CRMIntegrator"))
                {
                    // Register the service name.
                    server.Register();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
    }
4

1 に答える 1

2

ここでは、 usingキーワードを適切に使用していません。Register()呼び出しの後、サーバーはすぐに破棄されます。これは確かに、Loadイベントが実行されるまでにまだ生きている可能性はほとんどありません。

サーバー変数をフォームクラスのフィールドにしますフォームが閉じられるまで破棄しないでください。OnFormClosed()メソッドのオーバーライドまたはFormClosedイベントハンドラーで破棄してください。

于 2011-02-07T15:01:00.480 に答える