- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有两种与以下方法类似的方法。在 MainThreadDoWork
方法中,无论 OtherThreadWork
方法中的 autoResetEvent.Set() 是什么,循环都会完成执行。知道这个 AutoResetEvent 实例中发生了什么吗?
AutoResetEvent autoResetEvent = new AutoResetEvent(true);
private int count = 10;
private void MainThreadDoWork(object sender, EventArgs e)
{
for (int i = 0; i < count; i++)
{
if (autoResetEvent.WaitOne())
{
Console.WriteLine(i.ToString());
}
}
}
private void OtherThreadWork()
{
autoResetEvent.Set();
//DoSomething();
}
编辑
下面是实际的 OtherThreadWork 的样子。
private void OtherThreadWork()
{
if (textbox.InvokeRequired)
{
this.textbox.BeginInvoke(new MethodInvoker(delegate() { OtherThreadWork(); }));
autoResetEvent.Set();
}
else
{
// Some other code
}
}
最佳答案
传递给 AutoResetEvent
构造函数的 bool 参数指定事件是否在信号状态下创建。
您创建的它已经处于信号状态,因此您的第一个 WaitOne
不会阻塞。
尝试:
AutoResetEvent autoResetEvent = new AutoResetEvent( false );
关于c# - AutoResetEvent 在信号前触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9375977/
即使使用多年,我仍然不明白 AutoResetEvent 是如何工作的。 当谈到Set()时,是否应该有一部分代码在某处等待WaitOne()? 也就是说..如果在WaitOne()之前成功调用了Se
假设我正在处理来自多个线程的大量传入数据。当满足某些条件时,我可能希望这些数据充当特定操作的触发器。然而, Action 不可重入;所以同一个触发器被快速连续触发两次应该只会导致 Action 运行一
我有两个方法,ProcessQueue 和 AddToQueue,它们发生在不同的线程上。有时我会尝试在将项目添加到队列之前处理队列,此时我想等待将项目添加到队列中。我还想确保我永远不会遇到这样的情况
我在处理来自外部类的线程时遇到问题。我在线程方面还很陌生,所以很多事情对我来说仍然是个谜,所以请记住这一点。 我做了我的研究,发现了很多关于它的主题,包括: How to Sleep a thread
super 简单的问题,但我只是想澄清一下。我希望能够使用 AutoResetEvent 重新启动线程,因此我将以下方法序列调用到我的 AutoResetEvent。 setupEvent.Reset
我有两种与以下方法类似的方法。在 MainThreadDoWork 方法中,无论 OtherThreadWork 方法中的 autoResetEvent.Set() 是什么,循环都会完成执行。知道这个
private ConcurrentQueue _queue = new ConcurrentQueue(); private AutoResetEvent _queueNotifier = new
我在类库中有以下代码。然后我等待回拨到我的主应用程序中。我正在进行 DownloadStringAsync 调用,因此我必须等待几秒钟才能在完成后获得回调。我有 3 个这样的调用要等待,所以在我的主应
使用 Xamarin.Forms(适用于 iOS),我尝试实现在继续之前等待用户确认已设置 GeoLocation 权限的功能。 我尝试实现这一点的方法是让线程等待直到使用 AutoResetEven
有人可以介绍 AutoResetEvent.Reset() 方法的用例吗?我什么时候以及为什么要使用这种方法?我了解 WaitOne 和 Set,但这对我来说还不清楚。 最佳答案 是的,每当等待事件的
我可能超出了 AutoResetEvent 的正确设计范围,但不太清楚该求助于什么。我想要这种行为: var autoResetEvent = new AutoResetEvent(false); a
我一直在使用 AutoResetEvent 在线程之间进行同步。 一些线程(A-F)调用 autoresetevent.WaitOne();在等待另一个线程 (X) 完成其工作时 当拥有 autore
考虑以下模式: private AutoResetEvent signal = new AutoResetEvent(false); private void Work() { while (
我正在 .NET (C#) 中的多线程服务器中创建一些“工具”。 检查 .NET ManualResetEvent 的值相当容易,无需担心更改值: aManualResetEvent.WaitOne(
假设我必须在 .Net 3.5 SP1 中编排同步算法,标题中列出的任何同步原语都非常适合该任务。 从性能的角度来看,是否有任何一个比其他的性能更好? 我问这个是因为我已经编码了一段时间,但对这个主题
我在 RegisterWaitForSingleObject 中阅读过: http://www.albahari.com 而且我不明白我什么时候更喜欢使用 AutoResetEvent 而不是 Reg
我正在尝试实现AutoResetEvent。为此,我使用一个非常简单的类: public class MyThreadTest { static readonly AutoResetEvent
我正在尝试使用生产者消费者模式来处理和保存一些数据。我正在使用 AutoResetEvent 在两个 therads 之间发送信号,这里是我的代码 这里是生产者函数 public Results[]
我正在阅读 MSDN 上的 AutoResetEvent 文档,随后的警告有点让我困扰...... “重要:不能保证每次调用 Set 方法都会释放一个线程。如果两次调用距离太近,以至于第二次调用发生在
是c# ManualResetEvent和 AutoResetEvent创建或维护类的成本很高吗? 它们是否消耗某种有限的 Windows 内核资源,如果是,它的限制程度如何? 例如如果我的代码可以每
我是一名优秀的程序员,十分优秀!