如果我启动一个需要5秒钟才能完成的方法。它运作完美。但是,在此期间,我无法与窗口互动。
例如: 您希望该程序的用户启动一个用Selenium在Webside上打开的方法,并搜索100个包含名称“ Code”的网站,这需要100s。但是在这段时间内,您无法与用户界面进行交互,也无法将其关闭。
窗口:
例如:
driver.Navigate().GoToUrl(url);
().Window.Maximize();
Thread.Sleep(3000);
谢谢
答案 0 :(得分:2)
您的应用程序当前在单个线程中运行。这意味着它可以同时处理一件事情。在这种情况下,请处理与Window的交互或执行长时间运行的代码。
一个可能的选择是在一个单独的线程上执行长时间运行的代码。 this article中的更多信息。
C#为在后台执行工作提供了完美的解决方案-任务。对于小任务,我建议您使用“任务”而不是“线程”。 Tasks类使您可以创建任务并异步运行它们。任务是代表应该完成的某些工作的对象。该任务可以告诉您工作是否完成,并且操作返回结果,则任务会为您提供结果。
要创建任务并运行它,只需将Action作为参数传递给StartNew方法:
Task.Factory.StartNew(() => {
driver.Navigate().GoToUrl(url);
driver.Manage().Window.Maximize();
Thread.Sleep(3000);
});
启动任务here的其他方式。
中了解有关任务的更多信息