相关疑难解决方法(0)

事件处理程序执行顺序

如果我设置了多个事件处理程序,如下所示:

_webservice.RetrieveDataCompleted += ProcessData1;
_webservice.RetrieveDataCompleted += ProcessData2;
Run Code Online (Sandbox Code Playgroud)

事件RetrieveDataCompleted被触发时处理程序的运行顺序是什么?它们是否在同一个线程中运行并按顺序运行?

c# asynchronous event-handling

86
推荐指数
5
解决办法
4万
查看次数

优先处理事件处理程序

我有以下代码,我处理一个事件两次.但是我总是希望确保mynewclass始终首先处理事件,然后触发本地事件处理程序代码.我理解MyClass事件应首先触发,因为它是首先创建的事件,但因为线程和入队正在发生,我认为它花了太长时间并且myhandleeventlocal在我想要它之前做了一些事情.我能等待它发生的任何方式吗?

    public MyMainClass
    {

    private MyMethod()
    {
        MyClass mynewclass = new MyClass();
        mynewclass.myObject += MyHandler(myhandleventlocal);
        mynewclass.loadedevent += EventHandler(loadedevent)
    }

    private void myhandleventlocal()
    {

             //do stuff

    }

    private void loadedevent()
    {
         //do some stuff
     }

    }

    public MyClass
    {
         public MyObject myObject;
         public event loadedevent;
         public MyClass()
         {
               myObject = new MyObject();
               myObject += MyHandler(myhandlevent);

         }

         private void myhandlevent(long value, string detail)
         {

             //Start a thread
             //Enqueue value and detail
             //On seperate thread dequeue value and process …
Run Code Online (Sandbox Code Playgroud)

.net c# event-handling .net-3.5 c#-3.0

2
推荐指数
1
解决办法
4285
查看次数

多播委托C#中的奇怪行为?

我有这个简单的事件:

public class ClassA
{
    public event Func<string, int> Ev;
    public int Do(string l)
    {
        return Ev(l);
    }
}
Run Code Online (Sandbox Code Playgroud)

和2方法:

  static int Display(string k)
        {
            return k.Length;
        }

  static int Display_2(string k)
        {
            return k.Length*10;
        }
Run Code Online (Sandbox Code Playgroud)

我正在注册这个活动:

 ClassA a = new ClassA();
 a.Ev += Display;
 a.Ev += Display_2;
Run Code Online (Sandbox Code Playgroud)

现在,我正在执行:

   Console.WriteLine(a.Do("aaa")); 
Run Code Online (Sandbox Code Playgroud)

输出 :

在此输入图像描述

什么 ???

  • 他在调用列表中有2种方法!它确实运行了它们,但为什么它只显示上次注册的结果?

  • 结果在哪里"3"消失了?(第一次调用)?(虽然两个display+都display_2被执行了......我没想到console.write会迭代结果.但也没想到他决定要显示哪个.)

编辑:

在此输入图像描述

.net c# delegates

0
推荐指数
2
解决办法
568
查看次数

标签 统计

c# ×3

.net ×2

event-handling ×2

.net-3.5 ×1

asynchronous ×1

c#-3.0 ×1

delegates ×1