C#的回调函数里的变量和正文中变量不同?

imbigsnail 2012-07-03 10:18:56
截取了有关的几行代码:


namespace TPNameSpace
{


public partial class TPMain : Form
{
double Heading = 0; //arr[2]
public delegate void CALLBACKFUNCFK(IntPtr pData, Int32 datalength);
public static CALLBACKFUNCFK callbackFK = new CALLBACKFUNCFK(CallBackFuncFK);

[DllImport("DataCtrlDll.dll", CharSet = CharSet.Auto, EntryPoint = "SetCallBack_YCFK")] // 设置设备的回调CallingConvention = CallingConvention.Cdecl,
public static extern int SetCallBack_YCFK(CALLBACKFUNCFK pCallBackFK);//FGetData pGetYC_FK
private void button1_OnMouseMove(object sender, EventArgs e)
{
label4.text="234";
int tempres = SetCallBack_YCFK(callbackFK);


}
public static void CallBackFuncFK(System.IntPtr pData, Int32 datalength)
{
int Heading=3;


label4.Text = Heading.ToString();// 此处提示出错,说找不到label4的定义 ,而且,此处的heading和正文中的heading完全两码事,怎么回事?



return;
}
}
...全文
209 7 打赏 收藏 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
SocketUpEx 2012-07-04
  • 打赏
  • 举报
回复
楼上不是说我吧
cheng2005 2012-07-04
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

委托创建一个新线程,回调函数也属于这个线程,当然不能访问主线程创建的控件(label4)了

代码: [复制到剪贴板]
label4.Text = Heading.ToString();

改为

代码: [复制到剪贴板]
MethodInvoker updateLabel = delegate
{
label4.Text = Heading.ToS……
[/Quote]
你要是不懂就别乱指点。

public static void CallBackFuncFK(System.IntPtr pData, Int32 datalength)

你这个回调函数是static,所以它当然找不到实例的成员 label4
SocketUpEx 2012-07-03
  • 打赏
  • 举报
回复
// 此处提示出错,说找不到label4的定义 ,而且,此处的heading和正文中的heading完全两码事,怎么回事?

这个问题:
因为CallBackFuncFK函数属于TPMain类
label4属于TPMain对象
imbigsnail 2012-07-03
  • 打赏
  • 举报
回复
委托创建一个新线程,回调函数也属于这个线程,当然不能访问主线程创建的控件(label4)了

代码: [复制到剪贴板]
label4.Text = Heading.ToString();

改为

代码: [复制到剪贴板]
MethodInvoker updateLabel = delegate
{
label4.Text = Heading.ToString();
};
if (label4.InvokeRequired)
{
label4.Invoke(updateLabel);
}
else
{
updateLabel();
}

可以?
SocketUpEx 2012-07-03
  • 打赏
  • 举报
回复
所有的
imbigsnail 2012-07-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

全部去掉static,试试
[/Quote]

去掉哪些?我这段代码里所有的吗?
SocketUpEx 2012-07-03
  • 打赏
  • 举报
回复
全部去掉static,试试
附训练好的 YOLO 权重与 PyQt 可视化检测界面,页面底部含可视化效果预览,毕设/课设开箱即用。 【数据集概况】 · 检测类别(中文):[坡道(ramp)] · 训练集:275 张 · 验证集:27 张 · 测试集:0 张 · 总计:302 张 该数据集聚焦于城市环境中各类建筑入口处的坡道设施,涵盖住宅、商铺、公共设施等多种场景,真实反映了无障碍通行设施在实际应用中的多样化形态。数据集中包含金属、橡胶、塑料等多种材质的坡道,以及不同尺寸、结构和安装方式的实例,充分体现了坡道在城市基础设施中的广泛部署与重要性。该数据集为城市智慧化管理、无障碍环境建设及公共安全监控提供了高质量的视觉基础支持。... 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 33 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.6372** mAP50-95 | 0.3401 Precision | 0.6603 Recall | 0.6190 train/box_loss | 1.0569 train/cls_loss | 0.7307 val/box_loss | 1.6084 val/cls_loss | 1.9323 【训练过程分析】 33 轮训练后 mAP50 仅 0.6372,模型收敛不充分。Loss 曲线前期下降后进入平台期,mAP 提升缓慢。mAP50-95 为 0.3401,定位精度同样偏低。 【模型性能评估】 Precision 0.6603、Recall 0.6190,精度高于召回,存在一... 使用场景:毕业设计、课程设计、深度学习入门、工业场景落地验证。

111,128

社区成员

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

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

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