当前位置: 首页 > 编程语言 > C#

如何使用异步来提高WinForms性能?分享

时间:2023-04-11 01:41:26 C#

如何使用async来提高WinForms的性能?我正在执行一些处理器繁重的任务,每次我开始执行该命令时,我的winform都会冻结,甚至在任务完成之前我都无法移动它。我使用Microsoft的相同程序,但似乎没有任何变化。我的工作环境是visualstudio2012with.net4.5privateasyncvoidbutton2_Click(objectsender,EventArgse){Tasktask=OCRengine();rtTextArea.Text=等待任务;}privateasyncTaskOCRengine(){使用(TesseractEnginetess=newTesseractEngine("tessdata","dic",EngineMode.TesseractOnly)){Pagep=tess.Process(Pix.LoadFromFile(files[0]));返回p.GetText();}}是的,你所有的工作仍然是在UI线程上完成的。使用异步不会自动将工作卸载到不同的线程上。你可以这样做:privateasyncvoidbutton2_Click(objectsender,EventArgse){stringfile=files[0];任务task=Task.Run(()=>ProcessFile(file));rtTextArea.Text=等待任务;}privatestringProcessFile(stringfile){using(TesseractEnginetess=newTesseractEngine("tessdata","dic",EngineMode.TesseractOnly)){Pagep=tess.Process(Pix.LoadFromFile(file));返回p.GetText();}}使用Task.Run意味着ProcessFile(繁重的工作)在不同的线程上执行。您也可以通过在新线程中启动任务来完成此操作。只需使用Thread.Start或Thread。ParameterizedThreadStart参考如下:http://msdn.microsoft.com/en-us/library/system.threading.parameterizedthreadstart.aspx带参数启动线程以上是C#学习教程:Howtouseasync提高WinForms性能?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: