- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我认为它不是在 run.waitOne() 等待;
这里在处理代码行时,假设我想通过单击暂停按钮暂停这些代码行。它应该再次等待我单击相同的暂停以恢复相同的线程。但它根本不等待。任何想法实现这个目标?
ManualResetEvent run=new ManualResetEvent(false);
bool flag=true;
StartButton_Click(object sender,EventArgs e)
{
ThreadStart ts=new ThreadStart(startprocess);
Thread th=new Thread(ts);
th.Start();
}
private void StartProcess()
{
while(true)
{
if (parentform != null)
{
TestForm(parentform);
parentform = null;
}
else
{
if (a[0] == true)
{
value[0] = method1();//method1 return a double value
Thread.Sleep(500);
}
if (a[1] == true)
{
value[1] =method2();
Thread.Sleep(500);
}
if (a[2] == true)
{
value[2] = method3();
Thread.Sleep(500);
}
if (a[3] == true)
{
value[3] = method4();
Thread.Sleep(500);
}
if (a[4] == true)
{
value[4] =method5();
Thread.Sleep(500);
}
if (a[5] == true)
{
value[5] = method6();
Thread.Sleep(500);
}
run.WaitOne();
timer1.Stop();
DateTime now = DateTime.Now;
string datetime = Convert.ToString(now);
database.InsertTest(datetime,value[0], value[1], value[2], value[3], value[4],value[5]);
}
}
}
private void Pausebutton_Click(object sender, EventArgs e)
{
if (flag)
{
timer1.Enabled = true;
run.Set();
flag = false;
}
else
{
timer1.Enabled = false
run.Reset();
flag = true;
}
}
最佳答案
您以错误的方式设置了Reset
和Set
- 如果它已经在等待,您正试图让它等待.. .否则,您正在设置事件,说“继续”。
我还要补充一点,依赖线程的状态不是一个好主意 - 您应该跟踪您是否逻辑上暂停,并相应地设置/重置事件。否则,您会遇到尴尬的情况,快速连续两次单击按钮可能暂停然后取消暂停,或者它可能只是暂停两次。
关于c# - WaitOne() 不在 ManualResetEvent 中等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12209580/
我需要访问由两个进程共享的 Windows 8.1 应用程序中的资源:应用程序本身和后台任务,所以我需要一个命名的 Semaphore,SemaphoreSlim 确实不适用于那里,因为我在获取和发布
我有一 strip 有 waitOn 的路线返回 Meteor.subscribe 的钩子(Hook).每次触发路线时,我都会从我的 loadingTemplate 中看到微调器在看到实际数据之前简要
我有以下代码 ThreadPool.QueueUserWorkItem(new WaitCallback(DownloadAsync), apiMethod); downloadHandle.Wait
我尝试了一些线程池示例。我从Fibonacci example on MSDN web site开始,但是从this wasn't suitable for more than 64 calculat
我有一个定时器,它的回调做一些事情: 计时器: dataProcessingTimer = new System.Threading.Timer(new TimerCallback(DataProce
我有一个订阅购物车出版物的全局 waitOn。 但是,在购物车页面上,我想显示购物车中的商品列表,购物车有一个带有listingIds的对象的line_items数组。 所以我还需要订阅购物车页面上的
我有一个信号量,它应该限制为 3,但是,它只是想调用多少就调用多少。我假设这是因为我使用 (1000)。但是,当我只尝试 () 时,它永远不会通过 WaitOne,我不确定该怎么做。 private
我正在尝试创建一个 Windows 服务,该服务每 5 分钟轮询一次系统并检查需要完成的某些操作。我已经阅读了 WaitHandles 及其在该领域的实用性,但需要了解其工作原理。 见下面的代码: p
我的应用程序需要每分钟为每个租户执行一些任务。这些是一劳永逸的操作,所以我不想使用 Parallel.ForEach 来处理这个问题。 相反,我循环遍历租户列表,并触发 ThreadPool.Queu
我正在编写一个带有临界区的应用程序。 而我决定使用AutoResetEvent来实现互斥。这是代码 public class MyViewModel { private
想象一下,我有一个类,它的方法可以被多个线程访问。想象一下,该类包含一个整数“i”作为私有(private)字段,并且一些方法会增加/减少该值。 最后想象一下我的一个方法每次 i == 5 时都需要阻
在 Microsoft .NET 中,方法 WaitOne() public virtual bool WaitOne( TimeSpan timeout ) 如果当前实例收到信号,将返回true;否
static Mutex mutex = new Mutex (false, "oreilly.com OneAtATimeDemo"); static void Main() { // Wa
1)调用AsyncWaitHandle.WaitOne可能会阻塞客户端还是一定会阻塞客户端? 2)WaitAll,WaitOne,WaitAny 有什么区别? 最佳答案 WaitHandle.Wait
我对我正在使用的 ManualResetEvent 感到有点困惑,它似乎没有解锁。有人知道为什么会这样吗? 我遇到的情况与此类似。实际情况相当复杂,我没有设法隔离出一段可以合理发布以重现问题的代码。
Threaded 应该创建 4 个独立的线程并等待它们中的每一个直到它们完成。每个线程休眠一段时间,只有当共享互斥对象没有被另一个线程占用时才终止,然后通过一个事件发出它完成的信号(这是我代码的简化版
我尝试在我的 Template.rendered 中获取返回的数据功能。 目前的代码是: this.route('editCat', { layoutTemplate : 'layoutCol
我正在尝试使用互斥锁来保护多个线程对某些硬件的访问,但我对 exitContext 的内容感到困惑参数意味着/做: public virtual bool WaitOne ( int mill
我正在使用 AutoResetEvent,其中可以对一个事件进行多个 Set 调用(异常处理)。有时会调用额外的 Set,因此当代码对 WaitOne 事件进行第二次调用时,它会直接通过,因为门已经打
在此先感谢您的帮助。 我想在代码中的某个时候取消AsyncWaitHandle.WaitOne()(这意味着我不想再阻止了),但我只是找不到解决方法。也许,这是我程序的逻辑问题,但是一旦给出退出信号,
我是一名优秀的程序员,十分优秀!