簡體   English   中英

如何在兩個項目之間創建事件?

[英]How do I create event between two projects?

我創建了兩個項目( Proj_1Proj_2 ), Proj_1包含Proj_1_Program.csProjectOneClass.csProj_2包含Proj_2_Program.cs ,並且我需要OnInformed觸發器同時觸發Informed1Informed2這就是我到目前為止的方法:

//Proj_1_Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CrossProjectEvent
{
    class Proj_1_Program
    {
        static void Main(string[] args)
        {
            ProjectOneClass obj1 = new ProjectOneClass();
            obj1.Inform += new EventHandler(Informed1);
            obj1.InformNow();
            Console.ReadLine();
        }

        private static void Informed1(object sender, EventArgs e)
        {
            Console.WriteLine("Informed1");
        }
    }
}

//ProjectOneClass.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CrossProjectEvent
{
    public class ProjectOneClass
    {
        public event EventHandler Inform;

        public void InformNow()
        {
            OnInformed(new EventArgs());
        }

        private void OnInformed(EventArgs eventArgs) // I want this method both trigger Informed1 and Informed2
        {
            if (Inform != null)
            {
                Inform(this, eventArgs); 
            }
        }
    }
}



//Proj_2_Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CrossProjectEvent;

namespace Proj_2
{
    public class ProjectTwoClass
    {
        public ProjectOneClass obj_proj_1;

        public ProjectTwoClass()
        {
            obj_proj_1 = new ProjectOneClass();
            obj_proj_1.Inform += new EventHandler(Informed2);
        }

        private static void Informed2(object sender, EventArgs e)
        {
            Console.WriteLine("Informed2");
        }
    }

    class Project2
    {
        static void Main(string[] args)
        {
        }
    }

}

但是似乎只有Informed1被觸發了,那么如何解決呢? 謝謝!

這是需要進程間通信的典型問題。 有十億種可能的不同技術和方法。

一種解決方案是使用使用命名管道的遠程處理( Sample ),但是TCP和NetSockets也是可能的。 這可能是最簡單的解決方案之一。

如果您要構建一個需要大量進程間通信的大型應用程序,那么值得一提的是參與者模型,尤其是AKKA.NET庫。

但是,這些只是您可以選擇的一些選項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM