ComboBox的TextChange事件卡顿原因 异步、多线程

6lilu9 2020-04-25 02:57:16
不贴源码了,简单说一下我的UI界面
左边一个ComBoBox界面,有个TextChange事件;
右边一个skinPanel1容器,里面用下列代码加载第三方程序

private void LoadThirdProess(string ThirdProessFilePath)
{
skinPanel1.Controls.Clear();

Process p = new Process();
p.StartInfo.FileName = ThirdProessFilePath;
p.StartInfo.WindowStyle = ProcessWindowStyle.Minimized;//加上这句效果更好
p.Start();
System.Threading.Thread.Sleep(1000);//加上,100如果效果没有就继续加大
MaiPtr = p.MainWindowHandle;
SetParent(p.MainWindowHandle, skinPanel1.Handle); //panel1.Handle为要显示外部程序的容器
MoveWindow(p.MainWindowHandle, 0, 0, skinPanel1.Width, skinPanel1.Height, true);
}


现在说问题:
当窗体load中加载LoadThirdProess后,运行过程中TextChange的事件很慢,慢到输入Text的过程中都卡顿;
但如果不运行LoadThirdProess,则一切正常。

尝试方案:
窗体load加载,改成这样
Task.Run(()=> { LoadAutoMesureWateP(); });//加载第三方程序

结果
 SetParent(p.MainWindowHandle, skinPanel1.Handle); //panel1.Handle为要显示外部程序的容器 
这句测试通不过。

本人对多线程与异步不太懂,请高人指点。

还有我想问一下原因,我没有仔细琢磨异步或多线程的原因是因为:
我感觉这种状况与异步没关系呀,因为即使LoadThirdProess这段代码再耗时耗资源,也只有在整个窗体load时再才起作用呀;ComboBox的TextChangeg事件是在整个窗体load完成后很久才调用的,根本不是一个时间点,应该影响不到才对呀。

我猜测TextChangeg的原因是不是因为系统内存(或CPU)不足了呀,也就是第三方程序(ThirdProessFilePath这个路径的程序)把系统资源占用了,就像早期的低配电脑一样,但也不应该呀,因为我的第三方程序只有几十M,不可能占那么多资源的。

不解,等高人。


...全文
228 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Allyn_0522 2020-04-25
  • 打赏
  • 举报
回复
运行一次三方程序占用时间多长可以知道呀?是不是第三方占用太多时间可以测试下

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧