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

freshman45 2012-03-14 05:54:54
dll定义了callback函数,
在csharp做了相应的声明,
但是当调用到C#中相应的回调函数的时候
没办法修改窗体上控件的值,
这是何故?
...全文
189 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
L_Y_M 2012-11-23
  • 打赏
  • 举报
回复
怎么解决的,能把你解决后的代码贴出来看下么
freshman45 2012-03-21
  • 打赏
  • 举报
回复
问题解决了!
回调是属于非ui线程的,在pc上面的话,运行的时候会报错,但在wince就没这个提示机制。

加个托管设置就可以了
freshman45 2012-03-19
  • 打赏
  • 举报
回复
没有人碰到吗
freshman45 2012-03-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bdmh 的回复:]

说的不明不白,谁知道你在干嘛,谁知道你是怎么写的代码
[/Quote]

情况是这样子:
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
bdmh 2012-03-15
  • 打赏
  • 举报
回复
说的不明不白,谁知道你在干嘛,谁知道你是怎么写的代码
freshman45 2012-03-15
  • 打赏
  • 举报
回复
没有人碰到这种情况下?

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧