小编Pun*_*unX的帖子

尝试将AsyncCallback添加到BeginInvoke()时C#参数计数不匹配

我有主窗体(PrenosForm),我试图异步运行Form2.

  1. 它没有回调委托:

    this.BeginInvoke(cp, new object[] { datoteke, this.treeView1.SelectedNode.FullPath.ToString(), this, efekt }, null); //works  1.
    
    Run Code Online (Sandbox Code Playgroud)
  2. 不适用于回调委托(参数计数不匹配):

     this.BeginInvoke(cp, new object[] { datoteke, this.treeView1.SelectedNode.FullPath.ToString(), this, efekt }, new AsyncCallback(callBackDelegate), null); //doesn't work parameter count mismatch 2.
    
    Run Code Online (Sandbox Code Playgroud)
  3. 如果我这样做,可以使用回调委托:

    cp.BeginInvoke(datoteke, this.treeView1.SelectedNode.FullPath.ToString(), this, efekt, new AsyncCallback(callBackDelegate), null); //works  3.
    
    Run Code Online (Sandbox Code Playgroud)

我的问题是为什么一种方式有效而另一种无效?我是新来的.有人会如此善良地回答我的问题并指出我的错误吗?

 private delegate void copyDelegat(List<ListViewItem> datoteke, string path, PrenosForm forma, DragDropEffects efekt);
 private delegate void callBackDelegat(IAsyncResult a);

 public void doCopy(List<ListViewItem> datoteke, string path, PrenosForm forma, DragDropEffects efekt)
 {
     new Form2(datoteke, path, forma, efekt);
 }

 public void callBackFunc(IAsyncResult …
Run Code Online (Sandbox Code Playgroud)

c# multithreading invoke

3
推荐指数
1
解决办法
2016
查看次数

标签 统计

c# ×1

invoke ×1

multithreading ×1