首页 > 解决方案 > 在方法工作期间无法与窗口交互 C#

问题描述

如果我启动一个需要 5s 直到完成的方法。它完美地工作。但是,在此期间,我无法与 Window 交互。

例如:您希望该程序的用户启动一个使用 Selenium 打开 Webside 的方法并搜索 100 个包含名称“代码”的网站......这需要 100 个。但在此期间,您无法与用户界面交互,也无法关闭它。

窗户:

在此处输入图像描述

例如 :

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

谢谢

标签: c#

解决方案


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

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

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

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

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

在此处启动任务的其他方式。

您可以在这篇 msdn 文章中阅读有关任务的更多信息


推荐阅读