希望这很简单......
我想要性能配置我的服务结构集群.
到目前为止,我: - 转到启动诊断工具,无需调试. - 通过向导选择我的服务结构项目作为启动项目. - 然后它询问要包含哪些项目,所以我包括我的服务exe - 然后我选择检测(我想要方法级别的时间)
然后我点击开始并立即我的exe崩溃.我认为这是因为visual studio试图在服务结构上下文之外运行我的"服务"作为独立的exe.
虽然不知道怎么办...
堆栈跟踪是:
DEBUG:激活选项
未处理的异常:System.Fabric.FabricConnectionDeniedException:未授权连接---> System.Runtime.InteropServices.COMException:来自HRESULT的异常:0x80071C43位于System.Fabric.FabricRuntime的System.Fabric.Interop.NativeRuntime.FabricEndGetNodeContext(IFabricAsyncOperationContext context) System.Fabric.Interop.AsyncCallOutAdapter2`1.Finish(IFabricAsyncOperationContext context,Boolean expectedCompletedSynchronously)---内部异常堆栈跟踪结束---在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess上的.NativeFabricRuntimeFactory.GetNodeContextEndWrapper(IFabricAsyncOperationContext context)位于Microsoft.ServiceFabric.Services.Runtime.RuntimeContext.d__3.MoveNext()的System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)的任务任务---从抛出异常的上一个位置开始的堆栈跟踪结束--- System.Runtime.C上的System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)Microsoft.ServiceFabric.Services.Runtime.ServiceRuntime.d__0.MoveNext()中的ompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)---抛出异常的前一个位置的堆栈跟踪结束---在System.Runtime.CompilerServices.TaskAwaiter System.Runtime.CompilerServices.TaskAwaiter.GetResult()上的System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中的.ThrowForNonSuccess(任务任务)
我在这里先向您的帮助表示感谢!
我目前遇到一个问题,需要将SAFEARRAY(GUID)作为返回值从C++传递给C#.
目前,C#端正在使用从Tlbimp.exe(类型库导入程序)生成的Interop dll.
IDL是:
HRESULT GetGuids(
[out]SAFEARRAY(GUID)* guids);
Run Code Online (Sandbox Code Playgroud)
我也试过[out,retval]
功能签名是:
HRESULT
WINAPI
MyClass::GetGuids(SAFEARRAY** guids)
Run Code Online (Sandbox Code Playgroud)
如果我使用SafeArrayCreate()或SafeArrayCreateVector():
SAFEARRAY* psa
psa = SafeArrayCreate(VT_CLSID, 1, rgsabound);
Run Code Online (Sandbox Code Playgroud)
我得到一个NULL SAFEARRAY指针,它应该指示E_OUTOFMEMORY哪个是不正确的.
我发现的VT_CLSID只是Ole属性集而不是SAFEARRAY:http:
//poi.apache.org/apidocs/org/apache/poi/hpsf/Variant.html它表明CLSID是
我还尝试了使用以下方法构建安全数组的替代方法:
SafeArrayAllocDescriptor()和SafeArrayAllocData().
hResult = SafeArrayAllocDescriptor(1, guids)
hResult = SafeArrayAllocData(*guids);
Run Code Online (Sandbox Code Playgroud)
这让我创建了数组,但是当SafeArrayPutElement()我用它填充它时,我得到一个0x80070057的HRESULT(参数不正确).这可能是因为它也需要VT_CLSID参数
我可以手动填充它 SafeArrayAccessData()
GUID* pData = NULL;
hResult = SafeArrayAccessData(*guids, (void**)&pData);
Run Code Online (Sandbox Code Playgroud)
但我从C#端得到一个错误:"该值不在预期的范围内"
我不确定如何通过retval或out参数完成将SAFEARRAY(GUID)返回到C#的所需功能.
它似乎应该很简单 - IDL中有很多区域我已经在没有任何UDT或编组的情况下传递GUID.一切正常,直到我需要在SAFEARRAY传递它们.
任何帮助表示赞赏,在此先感谢