Vb.net 调用C dll函数时不生成计时器事件

Vb.net 调用C dll函数时不生成计时器事件,vb.net,Vb.net,这里的Net_mang_表单是Form1,该代码写在Form2的按钮点击事件中 文件发送是dll的功能 prg_定时器是定时器控件 Prg_bar是进度条控件。您是否确实订阅了计时器已过事件,因为我在代码段中没有看到它? 如果您的计时器是System.Windows.Forms.timer,则它将只能接收WM_计时器通知,这些通知将转换为事件回调,并在您运行的UI线程不忙时返回到您的代码中。如果执行的阻塞调用需要很长时间,则在阻塞调用完成之前,不会获得计时器事件、按钮单击事件或任何其他windo

这里的Net_mang_表单是Form1,该代码写在Form2的按钮点击事件中

文件发送是dll的功能

prg_定时器是定时器控件


Prg_bar是进度条控件。

您是否确实订阅了计时器已过事件,因为我在代码段中没有看到它?

如果您的计时器是System.Windows.Forms.timer,则它将只能接收WM_计时器通知,这些通知将转换为事件回调,并在您运行的UI线程不忙时返回到您的代码中。如果执行的阻塞调用需要很长时间,则在阻塞调用完成之前,不会获得计时器事件、按钮单击事件或任何其他windows消息类型事件。如果你真的需要这种行为,你可能想考虑线程的使用。

你应该提供一些代码来确切地告诉我们你在做什么。你在说什么定时器事件?您是否尝试过通过代码进行调试?如果是基于WM_timer消息的计时器,您可能需要保持消息循环。
    Net_mang_Form.Prg_bar.Visible = True
    Net_mang_Form.Prg_bar.Value = 0
    Net_mang_Form.prg_Timer.Start()

    Dim chk As Integer = file_send(dev_id, dev_type, Net_mang_Form.snd_file_path, ip_addr & "#1206", contrl_id)

    '=================== Upload Process is finished =====================

    Net_mang_Form.prg_Timer.Stop()
    Net_mang_Form.Prg_bar.Visible = False

    '====================================================================