Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在异步文件流上是否可以有一个计时器,只有在没有收到任何内容时才倒计时?_C#_Timer_Async Await_Filestream - Fatal编程技术网

C# 在异步文件流上是否可以有一个计时器,只有在没有收到任何内容时才倒计时?

C# 在异步文件流上是否可以有一个计时器,只有在没有收到任何内容时才倒计时?,c#,timer,async-await,filestream,C#,Timer,Async Await,Filestream,我使用一个基本文件流通过hid.dll读取outputReportBuffer 设置时,我实时接收消息,并在程序中显示数据。 目前,我正在努力找到一个解决方案,该解决方案围绕一个计时器,该计时器应该在我停止接收来自文件流的消息时启动 文件流中是否有任何触发器,我可以用来检查是否还有消息通过 try { readTrigger = true; while (readTrigger) { await fileStreamDeviceData.ReadAsync

我使用一个基本文件流通过hid.dll读取outputReportBuffer

设置时,我实时接收消息,并在程序中显示数据。 目前,我正在努力找到一个解决方案,该解决方案围绕一个计时器,该计时器应该在我停止接收来自文件流的消息时启动

文件流中是否有任何触发器,我可以用来检查是否还有消息通过

try
{
    readTrigger = true;
    while (readTrigger)
    {
        await fileStreamDeviceData.ReadAsync(outputReportBuffer, 0, outputReportBuffer.Length);
    }
}
catch (Exception ex)
{
    throw ex;
}
这就是我使用文件流的方式,它一直在为我工作,没有任何问题,直到现在,我需要某种触发器/计时器来查看是否还有消息通过


非常感谢您对如何做得更好的建议或指向正确方向的指针。

ReadAsync
接受取消令牌。您可以传入一个令牌,该令牌将在设置的时间段后自动取消。如果任务最终被取消,那么您将知道读取超时,并且可以相应地响应。

包含
catch(Exception ex){throw ex;}
是毫无意义的。它不做任何有效率的事情,只是清除异常堆栈;我知道这是可能的,但那不是我想要的。目前,在没有任何消息通过的情况下,可能会有10-15秒的时间。我在寻找一个触发器,它告诉我目前没有消息通过。当它还在努力阅读的时候。不超时related@wankr如果每次执行读取时都使用一个新的取消令牌,那么您将得到一个新的取消令牌。