我在C#中使用BackgroundWorker,我需要使用AvSetMmThreadCharacteristics将线程的优先级更改为RealTime,将特性更改为“Pro Audio”。
由于BackgroundWorker在ThreadPool中回收线程,因此不建议更改这些属性,但如果我必须重写代码以使用普通的Thread(),我会丢失所有额外内容(取消/进度/等) )。
那么,当坚持使用BackgroundWorker线程时,我会遇到什么问题?
答案 0 :(得分:4)
只需创建一个单独的线程,您就拥有它。池线程用于相对较短的使用时间,似乎不适合您的情况 重现进度和取消逻辑并不是那么困难。
当您更改bgw中的属性时,请确保将其设置回来(尝试/最后)。但是还有其他问题,当您锁定或等待某些内容时,您的托管池线程可能会被切换。至少规格不排除这一点。