gpt4 book ai didi

c# - 等待请求时任务等待问题

转载 作者:太空宇宙 更新时间:2023-11-03 12:00:34 28 4
gpt4 key购买 nike

我是 C# 新手,我想了解任务逻辑。

我等待打开 LED 灯泡的设备的响应。我想等到灯泡标志变为真,然后序列化它。

1)我在这里检查了很多问题,其中大多数使用任务数组,但我只有一个任务。我找到了 this问题并应用相同的逻辑,但是,我的任务什么都不做。

2) 最重要的是,我将断点放在附近:m_Condition.Set();m_Condition.Set();,似乎编译器甚至没有看到 Task,它们没有任何值(value)。然而,led 是 ON(意味着 light_flag 是真的)但是当我在序列化前后打印时 light_flag 看起来是假的。我无法捕捉到它真实的时刻。

3) 此外,我尝试创建一个线程而不是任务,但当它变为真时我无法捕获该值。

我卡住了,你能给我指路吗?

    ManualResetEventSlim m_Condition = new ManualResetEventSlim(false);

public bool Condition {
get {
return m_Condition.IsSet;
}
set {
if (!obj.light_flag) m_Condition.Set();
else m_Condition.Reset();
}
}

private void chk_Test1_CheckedChanged(object sender, EventArgs e) {

if (chk_Test1.Checked == true) SendMsg("light_flag");

Task myTask = Task.Run(() = >{
m_Condition.Wait();

Serialize();

});

}

void Serialize() {
string json = JsonConvert.SerializeObject(obj, Formatting.Indented);
File.WriteAllText(path_combined, json);

}

最佳答案

我用线程解决了它,在将消息发送到设备之前我给出了线程的开始。这样它就不会错过消息(当 light_flag 返回 true 时)。

关于c# - 等待请求时任务等待问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57219296/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com