小编And*_*tin的帖子

如何通知父线程所有子线程都已终止?

我有一个控制台应用程序,我正在移植到WPF.该应用程序有3个工作线程,在将一些输出结果打印到屏幕之前,它们都连接到主线程.我的理解是,如果我尝试在WPF应用程序中执行相同的操作,GUI将被阻止,并且不会对用户产生反应.那么如何通知父线程所有线程都已完成其工作?我认为解决方案将涉及委托和事件(或者可能是BackgroundWorker?),但我不清楚如何在线程终止时调用回调.

原始代码:

foreach (Thread t in threadList)
{
                t.Start();
}

foreach (Thread t in threadList)
{
                t.Join();
}

// print some results here
Run Code Online (Sandbox Code Playgroud)

c# multithreading

7
推荐指数
1
解决办法
1842
查看次数

使用E_FAIL会导致D3D11CreateDevice()失败的原因是什么?

我正在使用以下代码调用D3D11CreateDevice():

ID3D11Device* md3dDevice;
ID3D11DeviceContext* md3dImmediateContext;
D3D_DRIVER_TYPE md3dDriverType = D3D_DRIVER_TYPE_HARDWARE;
createDeviceFlags = D3D11_CREATE_DEVICE_DEBUG;
HRESULT hr = D3D11CreateDevice(
            0,                 
            md3dDriverType,
            0,                 
            createDeviceFlags, 
            0, 0,              
            D3D11_SDK_VERSION,
            &md3dDevice,
            &featureLevel,
            &md3dImmediateContext);
Run Code Online (Sandbox Code Playgroud)

但是,存储的结果HRESTUL hrE_FAIL.控制台具有以下输出:

Init Direct3D.exe中0x7590b9bc的第一次机会异常:Microsoft
C++异常:内存位置为0x0049ec64的_com_error ..
c:\ users\andrew\desktop\code\common\d3dapp.cpp(389):
D3D11CreateDevice(0,md3dDriverType,0 ,createDeviceFlags,0,0,D3D11_SDK_VERSION,&md3dDevice,&featureLevel,&md3dImmediateContext)
hr = E_FAIL(0x80004005)Init Direct3D.exe触发了断点

我不认为它是代码构建时的链接问题,但定义了以下附加依赖项:

d3d11lib
d3dx11d.lib
D3DCompiler.lib
Effects11d.lib
dxerr.lib

我的下一个想法是我的卡与D3D11不兼容.然而,这种情况并非如此.这是输出dxdiag:

------------------
System Information
------------------
Time of this report: 5/14/2012, 02:29:16
       Machine name: WINDOZE
   Operating System: Windows 7 Professional 64-bit (6.1, Build 7601) Service Pack 1 (7601.win7sp1_gdr.120330-1504)
           Language: …
Run Code Online (Sandbox Code Playgroud)

c++ directx directx-11

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

标签 统计

c# ×1

c++ ×1

directx ×1

directx-11 ×1

multithreading ×1