草庐IT

dll-interface

全部标签

c# - 中止对非托管 DLL 的调用

我有一个非托管DLL,如果输入参数是一个大值,它可以运行很长时间的函数,有时这是可取的,但并非总是如此。我如何在C#中调用此函数以便在需要时可以中止它?到目前为止,我已经尝试将调用放在一个单独的线程中,但中断和中止似乎都无法停止该进程,该进程以100%CPU运行,直到dll完成。是否可以终止正在运行的dll代码? 最佳答案 非托管代码只有在处于“可警告等待状态”时才可中止。当它消耗100%的CPU周期时不会。P/InvokingTerminateThread会起作用,前提是您可以获得线程句柄,而这在.NET中变得非常困难。无论如何它

c# - 通用约束如何防止使用隐式实现的接口(interface)对值类型进行装箱?

我的问题与这个问题有些相关:Explicitlyimplementedinterfaceandgenericconstraint.但是,我的问题是编译器如何启用泛型约束以消除对显式实现接口(interface)的值类型进行装箱的需要。我想我的问题可以归结为两个部分:在访问显式实现的接口(interface)成员时要求对值类型进行装箱的幕后CLR实现发生了什么,以及删除此要求的通用约束会发生什么情况?一些示例代码:internalstructTestStruct:IEquatable{boolIEquatable.Equals(TestStructother){returntrue;}}

c# - 如何在 autofac 中注册通用接口(interface)的所有实现?

我已经创建了通用接口(interface),假设将实体映射到View模型并向后映射。我必须在autofac配置中进行大约80次注册。是否可以将它们注册为批处理?这是界面:publicinterfaceICommonMapperwhereTEntity:BaseEntitywhereTModel:BaseEntityViewModelwhereTKey:struct{TModelMapEntityToModel(TEntityentity);TModelMapEntityToModel(TEntityentity,TModelmodel);TEntityMapModelToEntity(

c# - 为什么我不能将我的 COM 对象转换为它在 C# 中实现的接口(interface)?

我在dll中有此接口(interface)(此代码显示在VisualStudio中的元数据中):#regionAssemblyXCapture.dll,v2.0.50727//d:\svn\dashboard\trunk\Source\MockDiagnosticsServer\lib\XCapture.dll#endregionusingSystem;usingSystem.Runtime.InteropServices;namespaceXCapture{[TypeLibType(4160)][Guid("XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX")

c# - 如何解决错误 : Inconsistent accessibility: parameter type for generic c# interface?

将此代码写入我的项目时出现错误Error1Inconsistentaccessibility:fieldtype'System.Collections.Generic.List'islessaccessiblethanfield'Jain_milan.addchild.m_children'Error2Inconsistentaccessibility:parametertype'System.Collections.Generic.List'islessaccessiblethanmethod'Jain_milan.addchild.addchild(System.Collectio

c# - 查看c#中的dll注释

我写了我的函数的c#注释,然后我把dll文件给了我需要的friend,但是当他使用那些函数时,他看不到注释,如何解决这个问题?ps:我在项目中使用的时候可以看到评论; 最佳答案 评论被剥夺了程序集,你必须generatethexmldocumentation为您的项目并将其交给您的friend。如果两个文件(程序集和xml文档)位于同一目录中,VisualStudio将使用IntelliSense中的文档。(Xml文档can'tbeembeddedinassembly) 关于c#-查看c

c# - 我可以通过 gacutil 安装,但不能卸载相同的 dll

我已经使用gacutil安装了一个DLL。gacutil.exe/iSI.ArchiveService.CommonLogic.Exceptions.dll使用gacutil/l显示确实安装了。SI.ArchiveService.CommonLogic.Exceptions,Version=1.0.0.0,Culture=neutral,PublicKeyToken=925c8734ae397609,processorArchitecture=MSIL然后我想卸载它。gacutil.exe/uSI.ArchiveService.CommonLogic.Exceptions.dllMic

c# - 当Attributes服务于此目的时,标记接口(interface)的需求是什么?

我有点迷茫ThepurposeofMarkerInterfaceVsAttributes.他们的目的在我看来是一样的(如果我错了请原谅我)。谁能解释一下它们的目的有何不同? 最佳答案 以下是两者的一些优点。标记接口(interface):使用动态类型检查更容易检查(“obj是IMarker”);允许future的功能和数据可扩展性(即将“标记”接口(interface)转变为实际声明一些成员的“完整”接口(interface));可用于泛型类型约束;另一方面,属性:提供更清晰的元数据分离;允许通过它们的构造函数或属性指定附加信息;允

c# - 为什么我们要实现接口(interface)?

我们为什么要实现,例如ICloneable或IDisposable。我不是在问ICloneable或IDisposable做什么,但我想了解实现这些接口(interface)的充分理由是什么,而不是仅仅编写一个处理或克隆我们的对象的方法? 最佳答案 使用接口(interface)可以使这些功能的使用保持一致。这样,当另一个类想要/需要使用您的类时,它可以将其作为可克隆的一次性对象来使用,而无需担心您的特定实现细节。 关于c#-为什么我们要实现接口(interface)?,我们在Stack

c# - 为什么在实现接口(interface)方法时允许虚拟?

我对接口(interface)有一个特定的查询。默认情况下,接口(interface)方法是抽象的和虚拟的,所以如果我们实现该接口(interface)并在类中给出定义,我们实际上会重写该方法,但是当我们在实现类中再次将方法标记为虚拟时,为什么编译器不考虑我们实际上是想隐藏原来的接口(interface)虚方法。如果我们在基类中有一个虚方法并且派生类再次将该方法标记为虚方法,在这种情况下编译器会警告您隐藏了基类方法,因此如果您有意隐藏基类方法,请使用new.publicinterfaceITestInterface{voidvirtualmethod();//thismethodisb