BackgroundWorker在创建时花费了大量时间

时间:2017-01-24 17:09:29

标签: vb.net multithreading backgroundworker

我有一个控制工厂生产线的软件。沿线有一些条形码阅读器。当软件收到条形码时,它必须调用Progress数据库中的过程。有时,通话需要1-2秒,因此它被封装在后台工作中。

由于一个未知的原因,经过几个小时的运行,动态创建BGW需要很多时间。可以在5秒到9分钟之间!!!!

以下是BGW创建的代码:

Dim oParams() As Object = {aParam, opCode, Barcode}
Dim bckInsert As New System.ComponentModel.BackgroundWorker

AddHandler bckInsert.DoWork, AddressOf bckInsert_DoWork
MyBase.Add("Création background pour " & Barcode)
bckInsert.RunWorkerAsync(oParams)

MyBase.Add调用函数将信息记录到ASCII文件中。

以下是DoWork处理程序的代码:

Private Sub bckInsert_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs)
    Dim oParams() As Object = e.Argument

    Try
        Dim aParam = CType(oParams(0), Progress.Open4GL.Proxy.ParamArray)
        Dim opCode As String = oParams(1).ToString
        Dim Barcode As String = oParams(2).ToString

        MyBase.Add("Début DoWork: " & Barcode & " Op: " & opCode)

通常,日志行应该在文件中是连续的。

现在,这是一个日志文件的例子:

11:00:04:243 - Création background pour 1580570 001000  
11:00:04:243 - Début DoWork: 1580570 001000 Op: 130 

同一时间。

现在,当创作需要很长时间时:

11:00:37:049 - Création background pour 1580578 001000  
11:00:42:977 - Début DoWork: 1580578 001000 Op: 130

延迟5秒!!!

11:01:30:121 - Création background pour L5315273 001000  
11:10:47:884 - Début DoWork: L5315273 001000 Op: 240

9分钟!!!!!!!!!

CPU介于1%和9%之间,并且仍然有很多可用内存。

任何人都知道如何发生这种情况?

0 个答案:

没有答案