c# - while 循环或 thread.Sleep 是否会阻止可能引发的事件?
问题描述
在我的代码中,我使用的是 mqtt 客户端,当收到消息时,会引发事件处理程序并将消息存储在列表中。
private void MqttBroker_MqttMessagePublishedReceived(object sender, Events.MqttMessageEventArgs e)
{
_logger?.Information($"MqttBroker_MqttMessagePublishedReceived - message received by the watcher {e}");
try
{
if (e?.Payload != null)
{
_messages.AddMessage(e.Payload);
}
}
catch (Exception ex)
{
_logger?.Error($"MqttBroker_MqttMessagePublishedReceived - Something went wrong: {ex}");
}
}
与此同时,我在另一个带有 while 循环的函数中等待 x 分钟。这应该通过另一种方式完成,但目前我让它休息。但我现在的问题是。这个while循环是否有可能阻止正在引发的事件?这样 mqtt 代理就在我处于那个 while 循环时发布一条消息?
我的第二个问题如下,我让我的线程休眠 x 分钟而不是 while 循环,事件是否仍会引发,消息是否仍将存储在我的列表中?
先感谢您!
解决方案
要看。
如果你的 Event 在另一个线程中被调用,不会有任何问题,但如果你的 EventThread 和你的 LoopThread 相同,则事件不会被“吸入”它会等到 while 循环结束,然后它会触发事件
推荐阅读
- mysql - SQL检查是否有一条记录不存在并加入其他表
- ios - 带有表单数据和 application/x-www-form-urlencoded 的 Jmeter POST 调用
- node.js - async / await 似乎不起作用 nodejs passport reset passwd
- angular-test - 在Angular6中,模拟从服务器接收4xx和5xx响应的方法是什么
- matlab - 从数据库构建新矩阵时如何避免Matlab中的for循环
- python - 计算每列的不同值,返回数据框,并对值进行排序
- c# - 平滑不同幅度的随机噪声
- c++ - 用自动生成的值初始化 C++ 向量的最短方法
- javascript - 如何根据 scolling 更改图像?
- python - python(selenium)mac找不到模块