调用C dll函数时不会生成定时器事件

时间:2012-05-14 11:03:48

标签: vb.net

    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

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

此处Net_mang_FormForm1,此代码以Form2的按钮点击事件编写。

file_send是dll的功能。

prg_Timer是计时器控件。

Prg_bar是进度条控件。

2 个答案:

答案 0 :(得分:0)

您是否已经订阅了Timer Elapsed事件,因为我在代码片段中没有看到这一点?
VB.NET Timer

答案 1 :(得分:0)

如果您的计时器是System.Windows.Forms.Timer,那么它只能接收WM_TIMER通知(转换为您的代码中的事件回调),而您运行的UI线程并不忙。如果您正在执行需要很长时间的阻止调用,则在阻塞调用完成之前,您将无法获得Timer事件,按钮单击事件或任何其他Windows消息类型事件。如果您真的需要这种行为,可能需要考虑使用线程。