autoresetevent

    1热度

    1回答

    我有多个链接,我想在一个循环中访问。 访问了一个站点后,我希望线程等到documentCompleted完成后再访问下一个链接。 foreach (HtmlElement link in linkArray) { OpenNewProduct(link.ToString()); } public void OpenNewProduct(string url) { We

    0热度

    2回答

    背景 我目前正在通过终端界面重新创建具有GUI功能的GUI功能。所以错误不在触发事件的另一端,因为它以原始的GUI形式工作。 我在多台机器上运行由子任务组成的任务。 我订阅了事件,这些事件在进行时触发并打印出描述性消息。 要为所有Y机器的每个X子任务打印一条消息。 然后发生异步多线程操作。 我想打印出每个子任务的消息,每个子任务只解析一次。 我追踪子任务的完成情况,并保留一个2D布尔数组,其中行是

    0热度

    1回答

    如果正在运行,如何在用户请求关闭应用程序时等待BackgroundWorker完成?我想等这BackgroundWorker完成,然后退出应用程序。我尝试使用AutoResetEvent,但在FormClosing时调用WaitOne()似乎阻止整个UI,并且不会触发调用Set()的RunWorkerCompleted事件。 我该如何做到这一点? 我正在寻找替代/有道此: bool done =

    -1热度

    1回答

    在下面的代码中,我有一个用于控制同步的类KernalRecursiveAutoResetEvent。这有一个Lock和Leave方法,它调用AutoResetEvent的WaitOne()进行锁定,Set()进行释放。我设置了一个循环,所以我可以调用一个处理共享资源的方法。在方法Increment中,我将一个int添加到共享列表中。因为离开被称为快于锁定,因此比赛分子正在缩小。有没有更好的方法来控

    1热度

    2回答

    我想要一个运行某些处理的方法,该处理最多持续一秒钟,休眠5分钟,然后重复。我也希望用户能够摆脱睡眠并优雅地退出。我希望它可以在一整天内运行,而不会消耗太多的系统资源。什么是最好的设计模式? 这是我第一次尝试: 我使用一个线程等待并做处理。我不确定是否应该使用线程,线程池线程或任务。我不认为它应该是一个任务,但因为没有涉及异步IO操作。我也不认为我应该使用定时器,因为我希望能够在不等待下一个间隔的情

    2热度

    1回答

    我有一点很难解释的奇怪问题。我有singleton类,在构造函数中我必须运行一个任务来初始化一些组件/资源。 我从的C#深度使用了2个单身人士的执行情况,在一种情况下一切正常,在另一种情况下工作正常 - 不是。 代码在下面有一些评论。 由于某种原因,任务在一种情况下不会启动,主要问题是当我使用具有初始化和静态构造函数的静态字段(类Test2)时。 我做了一些其他测试,看起来像实现2任务不是以异步方

    1热度

    2回答

    首先,我还是一个初学者,所以我会很感激,如果你可以有一定的耐心:) 我一直在抓我的脑袋,今天这么辛苦。 事情是,我想运行三个不同的背景工作者。但是我想等到一个人完成后才能开始下一个,等等。 每个背景工作者都需要时间完成。长话短说,事情是,我使用WaitOne(),所以无论什么时候以前的背景工作者告诉我它已经完成,我可以开始运行新的,但UI线程冻结,直到三名背景工作者完成。 我正在设置一个不同的Au

    2热度

    2回答

    我拥有固定数量的“浏览器”,每个“浏览器”都不是线程安全的,因此它必须在单个线程上使用。另一方面,我有一长串的线程等待使用这些浏览器。什么我目前做的是有一个AutoResetEvent阵列: public readonly AutoResetEvent[] WaitHandles; 并进行初始化是这样的: WaitHandles = Enumerable.Range(0, Browsers.C

    1热度

    1回答

    我不习惯与AutoResetEvent一起工作,我想知道如何发生以下情况。 我们有一个始终在两台不同的机器记录不同的顺序装载操作的日志文件: 机A(问题出现) Loading Module A Loading Module B Loading Shell. Show Window. Waiting Until Services are Loaded & Initialized. Lo

    0热度

    1回答

    我想在现有的GUI修补问题,其中大部分是由这个答案粘贴下面的代码解决 - >How to wait for a BackgroundWorker to cancel? private BackgroundWorker worker = new BackgroundWorker(); private AutoResetEvent _resetEvent = new AutoResetEvent(f