C#中事件控制工作流问题

我遇到一个程序问题。这个程序是教科书上的。程序关于“事件控制工作流”的。下面是程序代码,说白了我看不明白。希望在我提问题的地方能帮我注释一下。拜托各位了。我看懂答案后给分... 我遇到一个程序问题。这个程序是教科书上的。
程序关于“事件控制工作流”的。
下面是程序代码,说白了我看不明白。希望在我提问题的地方能帮我注释一下。拜托各位了。我看懂答案后给分绝对不手软。还有追加的20分。谢谢!
注明:在设计页面的程序中已经申明了一个接口 定义了一个泛型委托

[ExternalDataExchange]
public interface IEventControl
{
event EventHandler<ExternalDataEventArgs> EventHello;
}

这个是Program.CS页面的代码
using System;
using System.Threading;
using System.Workflow.Runtime;
using System.Workflow.Runtime.Hosting;
using System.Workflow.Activities;
namespace EventControlTest
{
class Program : IEventControl
{
//这句话是什么意思呢?
public event EventHandler<ExternalDataEventArgs> EventHello;
//这里我看的懂
static void Main(string[] args)
{
Program p = new Program();
p.Run();

}
//这里这个SayHellow方法是做什么的呢?(Guid id)参数是干吗的呢?
public void SayHello(Guid id)
{
//这里EventHellow和(null, new ExternalDataEventArgs(id))这两个参数是做什么的呢?我看网上说第一个是事件 第二个是派生 我根本不明白 希望能解释一下
EventHello(null, new ExternalDataEventArgs(id));
}
public void Run()
{
using (WorkflowRuntime workflowRuntime = new WorkflowRuntime())
{
AutoResetEvent waitHandle = new AutoResetEvent(false);

ExternalDataExchangeService exchangeService = new ExternalDataExchangeService();

workflowRuntime.AddService(exchangeService);

exchangeService.AddService(this);

workflowRuntime.StartRuntime();

workflowRuntime.WorkflowCompleted += delegate(object sender, WorkflowCompletedEventArgs e) { waitHandle.Set(); };
WorkflowInstance instance = workflowRuntime.CreateWorkflow(typeof(EventControlWorkflow));
instance.Start();
//这里又不明白了 this.SayHellow是做什么的呢?this为什么要使用呢?后面括号里的两个参数是做什么的呢?
this.SayHello(instance.InstanceId);
waitHandle.WaitOne();
}
}
}
}
展开
 我来答
zwl_828
2009-04-23 · TA获得超过1047个赞
知道小有建树答主
回答量:367
采纳率:100%
帮助的人:434万
展开全部
[ExternalDataExchange]
public interface IEventControl
{
event EventHandler<ExternalDataEventArgs> EventHello;
}

这个是Program.CS页面的代码
using System;
using System.Threading;
using System.Workflow.Runtime;
using System.Workflow.Runtime.Hosting;
using System.Workflow.Activities;
namespace EventControlTest
{
class Program : IEventControl
{
//这句话是什么意思呢?
/*
答:这里是你定义的一个共有事件,其中EventHandler<ExternalDataEventArgs>
是一个委托的简化定义,这个事件的名字就是EventHello.
*/
public event EventHandler<ExternalDataEventArgs> EventHello;
//这里我看的懂
static void Main(string[] args)
{
Program p = new Program();
p.Run();

}
//这里这个SayHellow方法是做什么的呢?(Guid id)参数是干吗的呢?
/*
答:Guid id 参数类型为唯一标识符类型,也就是说传入这个方法中的参数是一个唯一标识符,SayHellow方法是用来调用之前声明的EventHello事件的.
*/
public void SayHello(Guid id)
{
//这里EventHellow和(null, new ExternalDataEventArgs(id))这两个参数是做什么的呢?我看网上说第一个是事件 第二个是派生 我根本不明白 希望能解释一下
/*这个方法应该是这样的public delegate void EventHellowHellow(object sender,ExternalDataEventArgs e); object sender 是传递参数的意思,在这里这个参数为null说明不传递参数。ExternalDataEventArgs e就是用来为你这个事件提供一些额外的辅助信息。(比如GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 中的GridViewRowEventArgs e提供的点击某一行的信息。)在这里ExternalDataEventArgs是由本地服务引发的事件的工作流通信活动时发送的数据,从 ExternalDataEventArgs 继承的事件类必须实现一个构造函数,因此,在这里new一个ExternalDataEventArgs,同时因为ExternalDataEventArgs为保证线程安全,使用Guid id来new
*/
EventHello(null, new ExternalDataEventArgs(id));
}
public void Run()
{
using (WorkflowRuntime workflowRuntime = new WorkflowRuntime())
{
AutoResetEvent waitHandle = new AutoResetEvent(false);

ExternalDataExchangeService exchangeService = new ExternalDataExchangeService();

workflowRuntime.AddService(exchangeService);

exchangeService.AddService(this);

workflowRuntime.StartRuntime();

workflowRuntime.WorkflowCompleted += delegate(object sender, WorkflowCompletedEventArgs e) { waitHandle.Set(); };
WorkflowInstance instance = workflowRuntime.CreateWorkflow(typeof(EventControlWorkflow));
instance.Start();
//这里又不明白了 this.SayHellow是做什么的呢?this为什么要使用呢?后面括号里的两个参数是做什么的呢?
/*
this.SayHellow就是调用这用SayHellow方法,
SayHellow方法与Run方法都在同一个类Program里,调用自身会用到this关键字
后面括号里面的是一个参数,InstanceId是一个属性,他会被传递到基类的构造函数中.InstanceId是一个全局唯一标识符,Runtime创建的每个工作流实例都会被分配这样一个唯一的实例标识符,利用InstanceId,Runtime可以把事件发送到正确的工作流实例中.
*/
this.SayHello(instance.InstanceId);
waitHandle.WaitOne();
}
}
}
}

您的问题我已经回答完成,这类问题我不是太了解,我涉入的不多,只是用比较书面的语言回答了一下,没有用什么太直白易懂的方法来解释,希望你能体谅。
de...2@163.com
2009-04-23 · TA获得超过1160个赞
知道小有建树答主
回答量:248
采纳率:0%
帮助的人:215万
展开全部
[ExternalDataExchange]
public interface IEventControl
{
event EventHandler<ExternalDataEventArgs> EventHello;
}

这个是Program.CS页面的代码
using System;
using System.Threading;
using System.Workflow.Runtime;
using System.Workflow.Runtime.Hosting;
using System.Workflow.Activities;
namespace EventControlTest
{
class Program : IEventControl
{
//这句话是什么意思呢?
//这是你自己定义的一个事件 ,后面就是一个委托,是为了事件发生时调用与委托相符合的函数
public event EventHandler<ExternalDataEventArgs> EventHello;
//这里我看的懂
static void Main(string[] args)
{
Program p = new Program();
p.Run();

}
//这里这个SayHellow方法是做什么的呢?(Guid id)参数是干吗的呢?
//Guid id 表示唯一标识

public void SayHello(Guid id)
{
//这里EventHellow和(null, new ExternalDataEventArgs(id))这两个参数是做什么的呢?我看网上说第一个是事件 第二个是派生 我根本不明白 希望能解释一下
// EventHellow就是调用了之前定义的那个事件啊

IEventControl中的
EventHello(null, new ExternalDataEventArgs(id));
}
public void Run()
{
using (WorkflowRuntime workflowRuntime = new WorkflowRuntime())
{
AutoResetEvent waitHandle = new AutoResetEvent(false);

ExternalDataExchangeService exchangeService = new ExternalDataExchangeService();

workflowRuntime.AddService(exchangeService);

exchangeService.AddService(this);

workflowRuntime.StartRuntime();

workflowRuntime.WorkflowCompleted += delegate(object sender, WorkflowCompletedEventArgs e) { waitHandle.Set(); };
WorkflowInstance instance = workflowRuntime.CreateWorkflow(typeof(EventControlWorkflow));
instance.Start();
//这里又不明白了 this.SayHellow是做什么的呢?this为什么要使用呢?后面括号里的两个参数是做什么的呢?
//调用之前的SayHellow方法啊
//this限定被相似的名称隐藏的成员
// 那instance.InstanceId自然就是被调用方法的参数拉,instance就是Run方法中的属性
this.SayHello(instance.InstanceId);
waitHandle.WaitOne();
}
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式