相关疑难解决方法(0)

.NET Backgroundworker对象的线程优先级

我正在尝试在我正在开发的应用程序中使用.NET Backgroundworker对象.

互联网上的所有资料都说这个对象在"背景"中运行,但我无法确认这个后台线程确实以"低优先级"模式运行.出现这个问题是因为在Windows中(我假设)后台任务可以在"正常"或"低于正常"或"低"优先级模式下运行.

在我的应用程序中,我尝试通过调用...在DoWork函数内设置优先级...

Thread.CurrentThread.Priority=ThreadPriority.Lowest
Run Code Online (Sandbox Code Playgroud)

...

但这似乎没有效果.后台工作者是否忽略此调用?

我想解释一下:

我的应用程序是一个互联网客户端,从一个房间收集有关温度,湿度等的实时数据,并使用上传到网页(不是网络服务)

system.net.webclient.UploadValuesAsync(...) 电话

我编写了应用程序,以便客户端GUI收集来自分庭的数据,给它们加上时间戳,然后将它们排队等待上传,就像这样

...

Synclock objlock
    debug.print("Queueing reading...")
    dataQ.Enque(reading)
End Synclock
...
Run Code Online (Sandbox Code Playgroud)

backgroundworker的Dowork函数出列然后上传,就像这样......

..............

Do
        if dataQ.count() <> 0 then
            Synclock objlock
              reading = dataQ.DeQue()
            End Synclock
            Dim client As New System.Net.WebClient
            ...put the reading in NameValueCollection and upload to server page
            req = new NameValueCollection
            ...
            ...
            client.UploadValuesAsync(uri, "POST", req)
        endif
        thread.sleep(1) 'without this line the CPU usage goes upto 100% and seems to slow other tasks!
    Loop …
Run Code Online (Sandbox Code Playgroud)

.net multithreading backgroundworker

7
推荐指数
2
解决办法
2万
查看次数

标签 统计

.net ×1

backgroundworker ×1

multithreading ×1