当前位置:编程学习 > C#/ASP.NET >>

pinvoke中的回调函数无法改变窗体控件值?

dll定义了callback函数,
在csharp做了相应的声明,
但是当调用到C#中相应的回调函数的时候
没办法修改窗体上控件的值,
这是何故? --------------------编程问答-------------------- 没有人碰到这种情况下? --------------------编程问答-------------------- 说的不明不白,谁知道你在干嘛,谁知道你是怎么写的代码 --------------------编程问答--------------------
引用 2 楼 bdmh 的回复:
说的不明不白,谁知道你在干嘛,谁知道你是怎么写的代码


情况是这样子:
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 --------------------编程问答-------------------- 没有人碰到吗 --------------------编程问答-------------------- 问题解决了!
回调是属于非ui线程的,在pc上面的话,运行的时候会报错,但在wince就没这个提示机制。

加个托管设置就可以了 --------------------编程问答-------------------- 怎么解决的,能把你解决后的代码贴出来看下么
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,