- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在从 C# NET 4 应用程序中的进程重定向标准输出,然后在单独的线程上使用 BinaryReader 来读取它。 (它是二进制数据;需要解析分隔符的视频 block )
在进程输出最后一个字节之前一切正常,此时 BinaryReader 挂起,阻塞在 ReadBytes(int) 这对我没有好处;我需要知道流何时结束,以便将最后的数据 block 写入磁盘。
我会使用 Process.Exited 事件并将其视为等同于 EOS(然后终止线程)。但是 Process.Exited 从未被引发:大概进程正在等待我的应用程序在它结束之前关闭流。
不幸的是,this question似乎表明对 StandardOutput 的更高级别属性(例如 StandardOutput.EndOfStream)的任何调用都会导致访问 StandardOutput 的默认 StreamReader,因此我认为这种方法已经过时了。
有没有一种简单的方法可以检测流的结尾,或者使 BinaryReader 超时?
{
runningProcess.Start();
// Read standard output on a new thread
thrdReadStandardOut = new Thread(new ThreadStart(ReadStandardOutput));
thrdReadStandardOut.Start();
}
...
void ReadStandardOutput()
{
Monitor.Enter(runningProcess); // keep this section thread safe
var br = new BinaryReader(runningProcess.StandardOutput.BaseStream);
bool abort = false;
while (!abort)
{
try
{
byte[] bytes = br.ReadBytes(256);
if (StandardOutputReceived != null)
StandardOutputReceived(this, new GenericEventArgs<byte[]>(bytes));
}
catch (EndOfStreamException)
{
abort = true;
}
}
Monitor.Exit(runningProcess);
}
最佳答案
Process.Exited
仅当您设置了 Process.EnableRaisingEvents
时才会引发事件为 true
。如果这样做,您应该通过 Process.Exited
或通过同步 Process.WaitForExit
获取进程退出通知。方法。
如果您仍然没有收到此事件,请查看您的子进程是否正常终止(尽管即使那样我仍然希望 Exited
触发)。
关于c# - 使用 BinaryReader 在 .NET 中重定向标准输出 - 检测 EOS/强制超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5735909/
这个问题已经有答案了: Can a shell script set environment variables of the calling shell? [duplicate] (20 个回答)
我想用 Python 为 eOS Luna 上的万神殿面板制作一个简单的小程序。我找不到任何有关 API 的文档。在一些论坛上有人建议我应该使用与 Gnome 或 Unity 相同的过程。然而,我尝试
如果您将输入编码为 std::istream_iterator ii(std::cin); std::istream_iterator eos; std::for_each(ii,eos,record
尝试即时切换输出文件,但无法处理 EOS。 http://gstreamer-devel.966125.n4.nabble.com/Dynamically-updating-filesink-loca
我正在尝试从包含非常大数据的表中获取数据。我正在使用 Java Webobject 和 EOmodel。当我尝试使用索引列获取时,我能够在不到 2 秒的时间内获得结果。但是当我尝试使用任何其他列进行搜
我们正在使用 EO.pdf 16,我们有 body 标签的 css body { background-image: url(../images/background.jpg); background
我在窗口内使用 EO webView 来加载 HTML 页面。即使我在页面中使用以下内容,页面似乎也会缓存。如何确保每次加载页面时都进行硬刷新? 我在 Windows 窗体中为“PageRefresh
我正在用另一个文件中的音乐替换我的视频的音轨。所以我修改了标准ExtractDecodeEditEncodeTest代码(来自 bigflake)以便音频 MediaExtractor是从所说的“另一
我正在尝试使用 GStreamer 1.8.2 和 Python 3.5 创建一个动态管道。目标是能够播放一些视频并在 EOS 上更改它,以类似于使用 about-to-finish of playb
在这个函数中,我该怎么做才能让父级停止尝试从管道读取数据。 IE。如果我运行命令 ls | grep test grep不会输出test和test.c然后等待用户输入? pipe(pipefd); i
我开始全神贯注于转换器架构,但有些事情我还无法掌握。 在无解码器的转换器中,例如 BERT,标记器总是在句子前后包含标记 CLS 和 SEP。我知道 CLS 既充当 BOS 又充当提供分类信息的单个隐
我正在尝试在 vm(使用 vmware 工作站)上运行的 Arista 交换机中配置以太网接口(interface)。我能够根据给定的用户 guid 配置管理接口(interface),但是在使用相同
我写了一个v4l2src同时显示和录制的代码。我的管道看起来像: / [queue] ! [videosink] v4l2src ! tee !
我正在寻找一种能够从 delphi 控制我的佳能或尼康相机的方法,基本上我需要找到一种方法来在相机与 USB 连接时接收新图像,即检测何时拍摄新照片,以便我可以在我的应用程序中采取措施,例如裁剪图像、
我正在尝试使用 gstreamer 从源中获取多个快照。使用以下代码,我成功获取了 9 个文件,但从源中获取了 EOS(这实际上是正常的,这是由 num-buffers 参数引起的): #includ
我们正在使用佳能eos sdk 2.14 进行直播和拍摄。相机是佳能1200D 以下是相机设置: 直播模式:启用 自动对焦模式:灵活 下面是代码 import java.awt.image.Buffe
我想从 Deleted 项目中的 Recoverable 项目文件夹中获取事件。 我们是否支持 rest API 来访问可恢复文件夹中的这些邮件/日历/联系人? 我找不到任何关于它的文章,也没有在 o
当我运行我的模拟器设备时,我得到了模拟器的输出,但我收到了以下错误: java.io.IOException: EOF at com.android.ddmlib.AdbHelper.read
谁能帮我解析这个输出以显示总分钟数? 这是命令(除格式化外按预期工作): ps -eo pid,etime,command | grep some_process | grep -v grep | a
我正在尝试使用 EOS CDT(合约开发工具包)。 我已经从 github 下载并安装了存储库,并习惯于按照 eos.io 开发页面上的指示执行以下命令。 https://developers.eos
我是一名优秀的程序员,十分优秀!