草庐IT

c# - 伙计,我的线程在哪里? (或 : rename a . NET 线程池线程 - 这可能吗?)

有时我发现自己在Debug模式下单步执行一个应用程序,直到我在某个特定的行上点击“步骤”,这会花费太多时间做某事,占用100%的CPU。在这一点上,我点击了“中断”按钮并尝试找出运行时间太长的程序。问题是,这个应用程序有大量的线程在运行,当我点击“中断”时,执行点转到了可能只是在“等待”的GUI线程。然后我必须搜索现有的线程(我数了数——这次是37个!)试图找到我正在执行的线程。我必须查看其中的每一个,直到找到我要找的那一个。我正在运行的线程是异步调用,因此它在线程池线程上运行。我想给这个线程一个描述性的名称,并在操作结束时重置它的名称。问题是,属性Thread.Name只能设置一次,

c# - 使用 LINQ 将 2D 网格转换为 'diamond' - 这可能吗?

前几天我需要一种算法将二维网格变成菱形(通过有效旋转45度),这样我就可以将对角线序列作为平面可枚举来处理,如下所示:1231456=>42789753869我的算法如下:publicstaticIEnumerable>RotateGrid(IEnumerable>grid){intbound=grid.Count()-1;intupperLimit=0;intlowerLimit=0;Collection>rotated=newCollection>();for(inti=0;irow=newCollection();for(intj=upperLimit,k=lowerLimit;

c# - 注册免费 COM 与 C# 互操作,可能吗?

是否可以将免注册COM与Dotnet互操作和C#一起使用?如果是这样,如何在C#项目中添加对COM对象的引用?我有一个带有嵌入式list和两个测试客户端的无注册ATLCOM服务器dll,一个是cpp,另一个是c#。cpp客户端使用import语句正确引用COM对象,或者#pragmacomment(linker,"\"/manifestdependency:type='win32'name='TestComSvr2'version='1.0.0.0'\"")或在Linker->ManifestFile选项下将“AdditionalManifestDependencies”设置为“typ

c# - C# 中的 C++ 样式模板,以任何方式可能吗?

我想为每个基本类型设置二维vector类。现在,为了确保最佳的运行时性能并能够使用许多实用函数,我需要为每个基元(Vector2Int、Vector2Float、Vector2Long等)创建一个单独的类。这只是大量的复制粘贴,如果我必须进行更改,我必须记住在每个类和每个实用程序函数中都进行更改。有没有什么可以让我编写类似C++模板的东西(或者有什么方法可以创建它)?我创建了一个小概念来向您展示它是如何工作的://compileisakeywordIjustinventedforcompile-timegenerics/templatesclassVector2compileT:int

c# - 在 .Net 中是否有可能在类中的任何方法传递给调用堆栈之前捕获所有未处理的异常?

问题:我想捕获来自类中任何方法的任何异常,以便我可以将类特定数据记录到异常中,以便在将其向上传递到堆栈之前进行日志记录。我知道我可以在类的每个方法中放置一个try-catch,但是方法有很多而且似乎应该有更有效的方法。我目前正在做的事情的例子:publicclassClassA{privateintx;privateinty;publicvoidMethod1(){try{//Somecode}catch(Exceptionex){ex.Data.Add("x",x);ex.Data.Add("y",y);throw;}}publicvoidMethod2(){try{//Someco

c# - 在完全托管的 asp.net c# web 应用程序中是否可能发生缓冲区溢出/溢出

在完全托管的asp.net门户网站中是否存在缓冲区溢出/溢出漏洞。如果是,如何测试。 最佳答案 在一般情况下,您不必担心缓冲区溢出。这是托管代码的主要优点之一,垃圾收集可能是另一个主要优点。您应该注意一些边缘情况-任何时候您的托管代码与非托管代码交互(Win32API调用、COM互操作、P/Invoke等)都可能在非托管代码中发生缓冲区溢出,基于从托管代码传入的参数。标记为“不安全”的代码也可以直接操作内存地址,从而导致缓冲区溢出。不过,大多数C#代码是在不使用“不安全”关键字的情况下编写的。

c# - Expression.Call 在简单的 lambda 表达式中。可能吗?

我需要生成一个像这样的lambda表达式item=>item.Id>5&&item.Name.StartsWith("Dish")好的,item.Id>5很简单varitem=Expression.Parameter(typeof(Item),"item");varpropId=Expression.Property(item,"Id");varvalueId=Expression.Constant(5);varidMoreThanFive=Expression.GreaterThan(propId,valueId);但第二部分对我来说更复杂......varpropName=Expr

c# - 将 Stream 转换为 IEnumerable。如果可能当 "keeping laziness"

我收到一个Stream并需要将IEnumerable传递给另一个方法。publicstaticvoidstreamPairSwitchCipher(StreamsomeStream){...someStreamAsIEnumerable=...IEnumerablereturned=anotherMethodWhichWantsAnIEnumerable(someStreamAsIEnumerable);...}一种方法是读取整个Stream,将其转换为字节数组并将其传入,因为Array实现了IEnumerable。但如果我能以这样一种方式传递它,在传递它之前我不必阅读整个Stream

c# - Windows 服务上的 Unity DI,可能吗?

我正在开发一个Windows服务来做一些周期性的操作,我可以使用Unity从那里的另一个库中注入(inject)我的类吗?我想在我的服务上使用[Dependency]属性,在Windows服务启动的入口点注册组件。例子:staticclassProgram{staticvoidMain(){ServiceBase[]ServicesToRun;UnityConfig.RegisterComponents();ServicesToRun=newServiceBase[]{newEventChecker()};ServiceBase.Run(ServicesToRun);}}publics

c# - 我应该尽可能使我的方法静态化吗?

我经常思考这个问题……这可能是个白痴问题,但还是要问。假设我有这个类:publicclassSomeClass{publicintAProperty{get;set;}publicvoidSomeMethod(){DoStuff(AProperty);}}这样做有什么好处吗:publicclassSomeClass{publicintAProperty{get;set;}publicstaticvoidSomeMethod(intarg){DoStuff(arg);}}唯一明显的优势是我现在可以直接访问SomeMethod。那么,在稍微重构允许的情况下,将这些类型的方法设为静态是一种好