小编hal*_*ton的帖子

HashSet <T>与Dictionary <K,V>搜索时间以查找项目是否存在

HashSet<T> t = new HashSet<T>();
// add 10 million items


Dictionary<K, V> t = new Dictionary<K, V>();
// add 10 million items.
Run Code Online (Sandbox Code Playgroud)

谁的.Contains方法会更快返回?

只是为了澄清,我的要求是我有1000万个对象(嗯,真的是字符串),我需要检查它们是否存在于数据结构中.我永远不会迭代.

.net performance dictionary hashset

101
推荐指数
4
解决办法
7万
查看次数

多线程HttpListener,等待异步和任务

这是一个多线程的可扩展HttpListener的一个很好的例子吗?

这是一个真正的IIS会这样做吗?

public class Program
{
    private static readonly HttpListener Listener = new HttpListener();

    public static void Main()
    {
        Listener.Prefixes.Add("http://+:80/");
        Listener.Start();
        Listen();
        Console.WriteLine("Listening...");
        Console.WriteLine("Press any key to exit...");
        Console.ReadKey();
    }

    private static async void Listen()
    {
        while (true)
        {
            var context = await Listener.GetContextAsync();
            Console.WriteLine("Client connected");
            Task.Factory.StartNew(() => ProcessRequest(context));
        }

        Listener.Close();
    }

    private static void ProcessRequest(HttpListenerContext context)
    {
        System.Threading.Thread.Sleep(10*1000);
        Console.WriteLine("Response");
    }
}
Run Code Online (Sandbox Code Playgroud)

我特意寻找一种不依赖于IIS的可扩展解决方案.而只是在http.sys(这是httplistener类) - 不依赖于iIS的原因是因为政府.我工作的区域需要极大减少的攻击面积.

c# task async-await

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

在同一进程中加载​​dll的多个副本

我有一个由第三方生产的dll,它具有某种内部数据结构,将其大小限制为X元素.

所以基本上,它有一个以X为限制的队列.

现在从我所知道的DLL是每个进程,但是可以多次加载DLL吗?也许每个线程?在C#?或者在C++/CLI中?

我正在尝试加载本机c ++ dll.

c++ windows dll multithreading process

9
推荐指数
2
解决办法
3898
查看次数

如何查找加载到进程中的DLL及其位置等

我已经使用了Process Explorer,但是我忘记了另一个实用程序,它可以让你看到一个进程从哪里加载(图像文件),它是dll在内存中以及它们从哪里加载.

我的Process Explorer仅适用于托管程序集.

还有原生的东西吗?

dll process

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

Windows 8/Windows Server 2012不支持尝试VSJitDebugger操作

我们有在某些条件下添加Debugger.Launch()和Debugger.Break()的代码,这个功能在Windows 8/Windows Server 2012中似乎不起作用

在以前版本的Windows中,这工作得很好,启动了一个窗口,显示Visual Studio Debug对话框.

这是Windows8/Windows Server 2012中的一个新的突破性变化吗?

windbg visual-studio

8
推荐指数
2
解决办法
2388
查看次数

在Func <T>上创建泛型类型约束

我想知道这是否可行:

public class Foo<T> where T : Func<T>
Run Code Online (Sandbox Code Playgroud)

要么

public class Foo<T> where T : Func<>
Run Code Online (Sandbox Code Playgroud)

似乎编译器告诉我它不可能.我想我可以在构造函数中抛出运行时异常,但是希望它有编译器错误.

这样做的方法有哪些?

c# lambda expression

8
推荐指数
1
解决办法
1409
查看次数

.NET静态分析 - 保证调用程序中的函数

有没有办法找出将在C#世界中作为程序的一部分执行的所有函数调用?

例如,鉴于此:

static void Main(string[] args)
{
     if (true)
     {
         CallTrueFunction();
     }
     else
     {
         CallFalseFunction();
     }
 }
Run Code Online (Sandbox Code Playgroud)

我可以通过FxCop或其他系统来了解CallTrueFunction吗?

c# static-analysis

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

带有void*的PInvoke与带有IntPtr的结构

想象一下,我有一个叫做的函数

Myfunction(const void * x);
Run Code Online (Sandbox Code Playgroud)

我的C#声明可能是

MyFunction(IntPtr x);
Run Code Online (Sandbox Code Playgroud)

这在功能和技术上是等同于

struct MyStruct { IntPtr P; }

MyFunction(MyStruct x);
Run Code Online (Sandbox Code Playgroud)

或者他们的编组方式会有所不同.

我问这个是因为我正在调用的库是无效*,对其他名称键入了类型,而在C#中我希望获得类型安全性,因为它的价值.

c# pinvoke interop

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

汇编 - x86 调用指令和内存地址?

我一直在阅读一些汇编代码,并且开始看到调用指令实际上是与程序计数器相关的。

但是,每当我使用 Visual Studio 或 windbg 进行调试时,它总是说 call 0xFFFFFF ... 这对我来说意味着它说我要跳转到那个地址。

谁是对的?Visual Studio 是否隐藏了指令编码的复杂性,只是说哦,这就是程序的意思,也就是说调试器知道它是一个与 pc 相关的指令,并且因为它知道 pc,它只是去为你做数学运算?

高度混乱。

x86 assembly linker masm nasm

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

C# - 为什么类 new() 约束使用 Activator.CreateInstance&lt;T&gt;()?

我只是问C# - 带有 new() 约束的泛型如何生成机器代码?

考虑了一段时间后,我想知道为什么 C# 编译器会发出这样的 IL。

为什么不能说一些 IL 之类的:“调用 T 的默认构造函数”?

c# clr jit

5
推荐指数
1
解决办法
382
查看次数