C#

时间:2019-05-30 08:21:15

标签: c#

如果我启动一个需要5秒钟才能完成的方法。它运作完美。但是,在此期间,我无法与窗口互动。

例如: 您希望该程序的用户启动一个用Selenium在Webside上打开的方法,并搜索100个包含名称“ Code”的网站,这需要100s。但是在这段时间内,您无法与用户界面进行交互,也无法将其关闭。

窗口:

enter image description here

例如:

driver.Navigate().GoToUrl(url);
().Window.Maximize();
Thread.Sleep(3000);

谢谢

1 个答案:

答案 0 :(得分:2)

您的应用程序当前在单个线程中运行。这意味着它可以同时处理一件事情。在这种情况下,请处理与Window的交互或执行长时间运行的代码。

一个可能的选择是在一个单独的线程上执行长时间运行的代码。 this article中的更多信息。

C#为在后台执行工作提供了完美的解决方案-任务。对于小任务,我建议您使用“任务”而不是“线程”。 Tasks类使您可以创建任务并异步运行它们。任务是代表应该完成的某些工作的对象。该任务可以告诉您工作是否完成,并且操作返回结果,则任务会为您提供结果。

要创建任务并运行它,只需将Action作为参数传递给StartNew方法:

Task.Factory.StartNew(() => {
    driver.Navigate().GoToUrl(url);
    driver.Manage().Window.Maximize();
    Thread.Sleep(3000);
});

启动任务here的其他方式。

您可以在this msdn article

中了解有关任务的更多信息