dll定义了callback函数,
在csharp做了相应的声明,
但是当调用到C#中相应的回调函数的时候
没办法修改窗体上控件的值,
这是何故?

解决方案 »

  1.   


    情况是这样子:
    C#代码如下:
    [DllImport("STATEAPI.dll")]
    public static extern int Open(StateCallBack fnState);
    // 回调声明
    public delegate void StateCallBack(int state);//具体使用 点击事件:
    {
        API.StateCallBack stateCallBackCsharp = new API.StateCallBack(StateCallback);
        API.Open(stateCallBackCsharp);
    }callback定义:
     public  void StateCallback(int state)
     {
        this.label.Text = "dffafd"
     }
    StateCallback有被回调到,但是label的值不改变。在程序里面直接调用StateCallback是可以改变其值的,
    是不是dll回调回来的,,不能操作ui
      

  2.   

    问题解决了!
    回调是属于非ui线程的,在pc上面的话,运行的时候会报错,但在wince就没这个提示机制。加个托管设置就可以了