相关疑难解决方法(0)

在Dictionary键中发生哈希冲突会发生什么?

我一直用c ++和java编写我的生活,但在C#上,我觉得这是一个完全不同的动物.

如果在c#中的Dictionary容器中发生哈希冲突,它会做什么?或者它甚至检测到碰撞?

在SDL中类似容器中发生冲突的情况下,有些会使键值部分将数据链接到键值部分,如链表,或者有些人会尝试找到不同的哈希方法.

[2010年6月4日上午10:56更新]

我试图为每个用户制作一个计数器.并且设置用户#没有定义,它可以增加或减少.我期待数据的大小超过1000.

所以,我想:

  • 快速访问最好不要O(n),重要的是由于要求我接近O(1),我需要确保我能够强制注销人员才能执行愚蠢的事情.
  • 动态增长和缩小.
  • 独特的数据.

Hashmap是我的解决方案,似乎Dictionary与c#中的hashmap相似...

c# hash collision-detection

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

获取线程ID

可能重复:
C#/ .NET:如何从线程中获取线程ID?

我如何获得与在Visual Studio中看到的相同的线程ID?

我试过用Thread.CurrentThread.ManagedThreadId,但我的数字不同.

我得到35,38,39等,但在Visual Studio中我有10596,893等...

.net c# multithreading visual-studio

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

在Microsoft .Net中设置线程处理器关联

(发布这个答案,因为我无法找到如何在任何地方执行此操作的完整说明,所以我认为它可能对某人有一些价值)

如何设置Microsoft .Net中特定线程的处理器关联?设置进程的亲和性是微不足道的System.Diagnostics.Process.ProcessorAffinity,但是System.Threading.Thread类没有提供这样的功能,并且.Net不保证托管线程链接到任何特定的操作系统线程.

.net cpu affinity

9
推荐指数
1
解决办法
4922
查看次数

如何避免在类之间传递上下文引用

Dynamics CRM 2011内部部署.(但是在远离Dynamics CRM的许多情况下存在这个问题.)

CRM插件有一个切入点:

void IPlugin.Execute(IServiceProvider serviceProvider)

(http://msdn.microsoft.com/en-us/library/microsoft.xrm.sdk.iplugin.execute.aspx)

serviceProvider是对插件执行上下文的引用.插件所做的任何有用的事情都需要访问serviceProvider或其成员.

有些插件很大且很复杂,包含几个类.例如,我正在开发一个插件,它有一个多次实例化的类.这个类需要使用serviceProvider.

从所有需要它的类访问serviceProvider的一种方法是向所有这些类添加属性,然后设置该属性.或者为每个类所需的serviceProvider部分添加属性.这些方法中的任何一种都会导致大量重复的代码.

另一种方法是在线程范围内有一个全局变量.但是,根据http://msdn.microsoft.com/en-us/library/cc151102.aspx,一个"不应该在插件中使用全局类变量".

那么访问serviceProvider而不在任何地方传递它的最佳方法是什么?

PS如果示例有帮助,serviceProvider提供对日志记录对象的访问.我希望几乎每个班级都能登录.我不想将对日志记录对象的引用传递给每个类.

c# oop design-patterns dynamics-crm dynamics-crm-2011

4
推荐指数
2
解决办法
2825
查看次数

从窗口获取线程ID

我需要使用此代码从运行时创建的窗口获取线程 ID

System.Windows.Window MyWindow = new System.Windows.Window();
MyWindow.Show();
Run Code Online (Sandbox Code Playgroud)

我正在使用窗口处理程序

IntPtr WindowHandle = (new WindowInteropHelper(MyWindow)).Handle;
Run Code Online (Sandbox Code Playgroud)

如何从窗口或其相应的处理程序中获取线程 ID?

c# winforms-interop winforms

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

为什么我的解决方案无法在 C# 中使用 P/Invoke NotifyServiceStatusChange?

我正在尝试 P/Invoke C# 中的NotifyServiceStatusChange 事件来检查服务何时停止。我设法让它编译并运行,没有任何错误,但是现在,当我停止服务时,它似乎不想通知它 dead。有什么想法吗?您可以通过将此代码复制到空白控制台应用程序中来测试它;只需确保将“我的服务名称”替换为您的服务名称(下面有该字符串的两个实例)。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {

        public delegate void StatusChanged(IntPtr parameter);

        public class SERVICE_NOTIFY : MarshalByRefObject
        {
            public uint dwVersion;
            public StatusChanged pfnNotifyCallback;
            public IntPtr pContext;
            public uint dwNotificationStatus;
            public SERVICE_STATUS_PROCESS ServiceStatus;
            public uint dwNotificationTriggered;
            public IntPtr pszServiceNames;
        };

        public struct SERVICE_STATUS_PROCESS {
            public uint dwServiceType;
            public uint dwCurrentState;
            public uint dwControlsAccepted;
            public uint dwWin32ExitCode;
            public …
Run Code Online (Sandbox Code Playgroud)

.net c# pinvoke winapi

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