C# 后台工作类中的委托和事件
现在,我知道ProgressChangedVenthandler是一名代表。反过来,委托就是一个类 1。“ProgressChangedEventHandler”属于哪一类?我的代码中没有定义任何内容。C# 后台工作类中的委托和事件,c#,.net,visual-studio-2010,C#,.net,Visual Studio 2010,现在,我知道ProgressChangedVenthandler是一名代表。反过来,委托就是一个类 1。“ProgressChangedEventHandler”属于哪一类?我的代码中没有定义任何内容。 Thread1.WorkerReportsProgress = true; Thread1.ProgressChanged += new ProgressChangedEventHandler(Function2HandleWhenProgressChanges); //When progr
Thread1.WorkerReportsProgress = true;
Thread1.ProgressChanged += new ProgressChangedEventHandler(Function2HandleWhenProgressChanges); //When progress changes, define a function to handle it.
Thread1.RunWorkerCompleted += new RunWorkerCompletedEventHandler(Function2HandleWhenThreadIsFinished); //The function to run when the thread is finished
Thread1.DoWork += new DoWorkEventHandler(Thread1_DoWorkDo); //The function defining what the thread must do.
2。“进步改变”是一个事件吗?如果是,这属于哪一类?
3。如果我没有指定“new ProgressChangedEventHandler”,代码仍然可以编译吗?。如下所示。
Thread1.WorkerReportsProgress = true;
Thread1.ProgressChanged += new ProgressChangedEventHandler(Function2HandleWhenProgressChanges); //When progress changes, define a function to handle it.
Thread1.RunWorkerCompleted += new RunWorkerCompletedEventHandler(Function2HandleWhenThreadIsFinished); //The function to run when the thread is finished
Thread1.DoWork += new DoWorkEventHandler(Thread1_DoWorkDo); //The function defining what the thread must do.
1) 它不属于任何人。它是.NET framework中单独定义的类型
2) 是的。它是在BackgroundWorker
类上定义的(可以通过按F1键在MSDN中查找它或在BackgroundWorker
类的实例上调用它来证明)
3) 它是语法上的糖。编译器帮助您减少键入
谷歌搜索“events and delegates.net”会给出很多很好的解释。1)它不属于任何人。它是.NET framework中单独定义的类型
2) 是的。它是在BackgroundWorker
类上定义的(可以通过按F1键在MSDN中查找它或在BackgroundWorker
类的实例上调用它来证明)
3) 它是语法上的糖。编译器帮助您减少键入
在谷歌上搜索“events and delegates.net”会给出很多很好的解释。您的问题的简短答案如下:
System.ComponentModel
命名空间,不嵌套在另一个类中System.ComponentModel
命名空间的一部分您的问题的简短回答如下:
System.ComponentModel
命名空间,不嵌套在另一个类中System.ComponentModel
命名空间的一部分using System.ComponentModel
放在程序顶部,这样您就可以在不拼写完整类型名称的情况下使用它
“进步改变”是一个事件吗
是的,这是BackgroundWorker类的事件。除了DoWork和RunWorkerCompleted,您几乎总是订阅另外两个活动
如果我没有指定“new ProgressChangedEventHandler”,代码仍然可以编译吗
这就是所谓的“语法糖”。C#编译器可以从事件类型中判断需要何种委托类型,并根据需要自动生成语句的“new ProgressChangedEventHandler”部分。非常方便。然而,IntelliSense将始终生成它。即使完整语句是语法糖,也不会显式分配Delegate.Target属性。编译器根据目标方法是否为静态方法,将其推断为null或this
反过来,委托就是一个类
它不是一个类,它是一个类型。这就解释了你为什么要问这些问题。将其视为方法的类型描述,返回类型和参数很重要。委托类型帮助编译器确保您分配了正确类型的事件处理程序方法。该方法必须具有与委托类型完全相同的返回类型和参数。如果不是这样,编译器会抱怨。这种类型的安全性在.NET中非常重要
“ProgressChangedEventHandler”属于哪一类
它是委托类型,而不是类。它是在.NET framework中声明的。添加对System.dll的引用,并将using System.ComponentModel
放在程序顶部,这样您就可以在不拼写完整类型名称的情况下使用它
“进步改变”是一个事件吗
是的,这是BackgroundWorker类的事件。连同DoWork和RunWorkerComple