首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

怎么使用this.Invoke方法传递多个参数给委托

2012-08-16 
如何使用this.Invoke方法传递多个参数给委托下面是MSDN中的例子:C# codeusing Systemusing System.Drawin

如何使用this.Invoke方法传递多个参数给委托
下面是MSDN中的例子:

C# code
using System;using System.Drawing;using System.Windows.Forms;using System.Threading;   public class MyFormControl : Form   {      public delegate void AddListItem(String myString);      public AddListItem myDelegate;      private Button myButton;      private Thread myThread;      private ListBox myListBox;      public MyFormControl()      {         myButton = new Button();         myListBox = new ListBox();         myButton.Location = new Point(72, 160);         myButton.Size = new Size(152, 32);         myButton.TabIndex = 1;         myButton.Text = "Add items in list box";         myButton.Click += new EventHandler(Button_Click);         myListBox.Location = new Point(48, 32);         myListBox.Name = "myListBox";         myListBox.Size = new Size(200, 95);         myListBox.TabIndex = 2;         ClientSize = new Size(292, 273);         Controls.AddRange(new Control[] {myListBox,myButton});         Text = " 'Control_Invoke' example ";         myDelegate = new AddListItem(AddListItemMethod);      }      static void Main()      {         MyFormControl myForm = new MyFormControl();         myForm.ShowDialog();      }      public void AddListItemMethod(String myString)      {            myListBox.Items.Add(myString);      }      private void Button_Click(object sender, EventArgs e)      {         myThread = new Thread(new ThreadStart(ThreadFunction));         myThread.Start();      }      private void ThreadFunction()      {         MyThreadClass myThreadClassObject  = new MyThreadClass(this);         myThreadClassObject.Run();      }   }   public class MyThreadClass   {      MyFormControl myFormControl1;      public MyThreadClass(MyFormControl myForm)      {         myFormControl1 = myForm;      }      String myString;      public void Run()      {         for (int i = 1; i <= 5; i++)         {            myString = "Step number " + i.ToString() + " executed";            Thread.Sleep(400);            // Execute the specified delegate on the thread that owns            // 'myFormControl1' control's underlying window handle with            // the specified list of arguments.            myFormControl1.Invoke(myFormControl1.myDelegate,                                   new Object[] {myString});         }      }   }


msdn中的例子只传递了一个参数,如果需要传递两个string参数呢?比如:
public delegate void AddListItem(String myString1,String myString2);
public AddListItem myDelegate = new AddListItem(AddListItemMethod);
  public void AddListItemMethod(String myStr1, String myStr2)
  {
  myListBox.Items.Add(myStr1+myStr2);
  }


该如何用this.Invoke调用呢?试了this.Invoke(myDelegate,new object{"100","200"});不行,会出错。

[解决办法]
myFormControl1.Invoke(myFormControl1.myDelegate,
new Object[] {myString});

例子就摆在这,照着抄都能抄错,怎不知道该怎么表达。
[解决办法]
new object[]{"100","200"}

热点排行