小编Jos*_*osh的帖子

引发了什么线程的Process.OutputDataReceived?

我有一个多线程winforms应用程序.GUI的一个线程,以及一个用于后台处理的线程.在后台处理中,我通过Process类与外部进程通信以发送接收数据.

我对运行了我注册的Process.OutputDataReceived的处理程序的线程感到困惑.根据MS文档:"OutputDataReceived事件表明关联的进程已写入其重定向的StandardOutput流." 但目前尚不清楚谁在举办此次活动.

请参阅以下示例代码:

myProc= new Process();
myProc.StartInfo.UseShellExecute = false;
myProc.StartInfo.RedirectStandardOutput = true;
myProc.StartInfo.RedirectStandardError = true;
myProc.StartInfo.RedirectStandardInput = true;
myProc.StartInfo.FileName = "myapp.exe";
myProc.StartInfo.Arguments = arguments;
myProc.StartInfo.CreateNoWindow = true;
myProc.OutputDataReceived += new DataReceivedEventHandler(DataReceivedFromProc);
myProc.ErrorDataReceived += new DataReceivedEventHandler(ErrorReceivedFromProc);
myProc.Start();
myOutputStream = myProc.StandardInput;
myProc.BeginOutputReadLine();
myProc.BeginErrorReadLine();
Run Code Online (Sandbox Code Playgroud)

那么在这种情况下,运行DataReceivedFromProc的线程是什么?如果在我的GUI线程与工作线程上执行上述操作会有所不同吗?

.net c# multithreading event-handling

9
推荐指数
1
解决办法
2429
查看次数

如何做好图书馆工作?

work我的同行们对使用当前工作库的名称(指向当前库的别名)而不是显式地使用名称(例如)存在一些担忧mylib

例如,如果您引用同一库中的另一个设计单元,您可以这样做:

my_inst : entity work.my_design
Run Code Online (Sandbox Code Playgroud)

或者

my_inst : entity mylib.my_design
Run Code Online (Sandbox Code Playgroud)

我觉得使用work更灵活,因为它不依赖于您将设计编译到的库的名称。您可以重命名mylibmyawesomelib,它仍然有效。

我能想到的一个明显的例子work是,如果您通常将设计单元和测试平台编译到同一个库中。那么,在您的测试平台中,通过 引用您的 UUT(设计)始终是安全的work

一个缺点是,如果(如上例所示)my_design不再位于同一个库中,设计将停止工作;如果使用throughmy_design的其中一个或任何设计被分离,则该设计将被破坏并且必须更新参考。my_designwork

work使用显式库名称还有其他明显的缺点吗?在分层使用的情况下,work是否可能会混淆哪个库是“当前工作库”?

例如:

mylib1
   (top_design.vhd)
   ...
   my_inst1 : entity mylib2.my_design
   ...

mylib2
   (my_design.vhd)
   ...
   my_inst2 : entity work.my_sub_design
   ...
Run Code Online (Sandbox Code Playgroud)

work编译 top_design.vhd 时,所包含设计中的引用是否存在混淆mylib2?或者既然my_design.vhd已经编译进去mylib2就没有混乱了?

脚注:永远不要将你的库命名为 work

vhdl

4
推荐指数
1
解决办法
6368
查看次数

如何生成丢失的#include 文件列表

背景:我正在处理一个大型 C++ 项目,该项目具有多个可执行文件和库输出以及一组工作 make 文件(即假设您拥有整个代码库,您可以键入 make 并且它将构建所有库和可执行文件)。

我的问题是我必须部分编译项目,并简单地链接已经为项目其他部分编译的库。我已经获得了项目其他部分的 lib 文件,但不是使用这些库所需的所有头文件。

问题:如何生成我需要请求的文件列表,以便成功完成编译,然后链接依赖于项目预编译部分的项目部分?仅通过运行 make 文件,我就会收到第一个缺少的依赖项的错误,但是如何生成所有依赖项的列表?

我尝试过的事情/示例:触发 make 脚本以编译和链接moduleA. make 搅动了一段时间,然后发出一个它无法找到的错误,该错误moduleBCommon.h包含在moduleAxyz.h. 它无法找到它,因为它不存在于磁盘上...我尚未获得该文件,必须请求它。

c++ makefile

3
推荐指数
1
解决办法
1381
查看次数

vhdl减去std_logic_vector

我试图减去2 std逻辑向量并得到错误

p2 <= p1(11 downto 0)- idata(11 downto 0);
Run Code Online (Sandbox Code Playgroud)

错误(10327):sub.vhd(32)处的VHDL错误:无法确定运算符""的定义 - "" - 找到0个可能的定义

我已经尝试添加use IEEE.std_logic_signed.alluse IEEE.std_logic_unsigned.all或两者已经尝试过 p2 <= std_logic_vector(unsigned(p1(11 downto 0)) - unsigned(idata(11 downto 0)));

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
--use IEEE.std_logic_signed.all;
--use IEEE.std_logic_unsigned.all;

entity sub is 

port (  
    clk         : in    std_logic;
    rst         : in    std_logic;
    --en            : in    std_logic;  
    idata    : in    std_logic_vector (11 downto 0);
    odata    : out  std_logic_vector (11 downto 0)  
);
end sub;

architecture beh of sub is …
Run Code Online (Sandbox Code Playgroud)

vhdl

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

vhdl ×2

.net ×1

c# ×1

c++ ×1

event-handling ×1

makefile ×1

multithreading ×1