1 public class Publish
2 {
3 public delegate void PublishEventHandler(object sender,PublishEventArgs e);
4 private event PublishEventHandler publish;
5 private Delegate[] del;
6 public class PublishEventArgs :EventArgs
7 {
8 public string BookName { get; private set; }
9 public PublishEventArgs(string bookName)
10 {
11 this.BookName = bookName;
12 }
13 }
14
15 public void RegisterPublish(PublishEventHandler publish)
16 {
17 this.publish += publish;
18 }
19 public void UnRegisterPublish(PublishEventHandler publish)
20 {
21 this.publish -= publish;
22 }
23
24 public void OnPublish(PublishEventArgs e)
25 {
26 Console.WriteLine("OnDoPublish");
27 if(publish != null)
28 publish(this,e);
29 }
30
31 public void OnPublishAsyn(PublishEventArgs e)
32 {
33 Console.WriteLine("OnDoPublish");
34 if(publish != null) {
35 del = publish.GetInvocationList();
36 foreach(Delegate item in del) {
37 PublishEventHandler Method = (PublishEventHandler)item;
38 Method.BeginInvoke(null,e,null,null);
39 }
40 }
41 }
42 }