小编Sil*_*ent的帖子

volatile作为同步机制

假设我有一个类Foo,它有一个名为Count的静态成员变量(类型为整数).此变量用于多线程应用程序,我在对此变量进行任何读/写操作之前使用锁同步机制.正如我正在阅读本文的易失性我得到的印象是我可以删除围绕此变量的所有锁定,并在声明此变量时使用volatile关键字.这应该照顾所有与synchnronization相关的东西.它是否正确?这种方法的优缺点是什么?

c# multithreading synchronization

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

MSI注册dll - 自我注册被认为是有害的

我有一个.NET winform应用程序,需要在安装过程中注册本机DLL.我的问题是如何在MSI安装过程中注册一个DLL(regsvr32 ABC.dll)?类似如何取消注册dll作为卸载过程的一部分?

installer windows-installer wix dllregistration winforms

5
推荐指数
2
解决办法
7568
查看次数

确定进程转储是在 x64 还是 x86 机器上生成的

如果我有进程转储文件,是否知道转储是在 x64 机器还是 x86 机器上生成的?

windbg crash-dumps sos

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

如何在客户端项目中添加服务引用?

我是WCF的新手,所以请说明你是否发现了我在这里完全错误的事情.我创建了一个WCF服务项目(我的服务类是从ServiceBase类中提取的),端点地址绑定设置为basicHttpBinding.现在我需要创建一个可以从此服务调用某些API的客户端应用程序.我的问题是,在我的客户端应用程序中,如何添加对该服务的服务引用.我是否需要首先在IIS下发布此服务(这意味着我也必须在计算机上使用IIS),或者是否还有其他一些添加服务引用的方法.

c# wcf wcf-client

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

代理类改变参数的顺序,把param作为第一个

我有一个 WCF 服务,它公开了一个具有以下签名的方法

bool MyMethod(string MyParam1, string MyParam2, out string MyParam3)
Run Code Online (Sandbox Code Playgroud)

但是当我添加服务引用时,代理类更改参数顺序如下

bool MyMethod(out string MyParam3, string MyParam1, string MyParam2)
Run Code Online (Sandbox Code Playgroud)

它把 param 作为第一个参数。知道为什么会这样吗,或者可能是我做错了什么?

wcf windows-services

4
推荐指数
1
解决办法
1106
查看次数

如何判断它是托管内存泄漏还是本机内存泄漏?

我与原生dll交互的.NET进程抛出OutOfMemory异常.以下是!address -summary和--eeheap-gc coammands.这是否意味着它是管理泄漏还是原生泄漏?

0:000>!address -summary
ProcessParametrs 002f10a8,范围002f0000 003f0000
环境002f07f0,范围002f0000 003f0000

--------------------使用摘要--------------------------
TotSize( KB)Pct(Tots)Pct(Busy)用法
17773000(384460):18.33%22.25%:RegionUsageIsVAD
168aa000(369320):17.61%00.00%:RegionUsageFree
110fe000(279544):13.33%16.18%:RegionUsageImage
395fe000(940024):44.83 %54.41%:RegionUsageStack 396000
(3672):00.18%00.21%:RegionUsageTeb
7540000(120064):05.73%06.95%:RegionUsageHeap
0(0):00.00%00.00%:RegionUsagePageHeap
1000(4):00.00%00.00%:RegionUsagePeb
0 (0):00.00%00.00%:RegionUsageProcessParametrs
0(0):00.00%00.00%:RegionUsageEnvironmentBlock
Tot:7fff0000(2097088 KB)忙:69746000(1727768 KB)

--------------------类型摘要--------------------------
TotSize( KB)Pct(Tots)用法
168aa000(369320):17.61%:
15970000(353728):16.87%:MEM_IMAGE
47e9000(73636):03.51%:MEM_MAPPED
4f5ed000(1300404):62.01%:MEM_PRIVATE

--------------------状态摘要--------------------------
TotSize( KB)Pct(Tots)用法
303e1000(790404):37.69%:MEM_COMMIT
168aa000(369320):17.61%:MEM_FREE
39365000(937364):44.70%:MEM_RESERVE

最大的自由区域:基数0d8b1000 - 大小0010f000(1084 KB)

0:000>!EEHeap -gc
GC堆数:1
代0开始于0x425f776c
第1代开始于0x425f5a08
第2代开始于0x01881000
临时段分配上下文:无
段开始分配大小
01880000 01881000 0281ecf8 0x00f9dcf8(16375032)
12010000 12011000 12f83a04 0x00f72a04 (16198148)
1e0a0000 1e0a1000 1e734094 0x00693094(6893716)
41e80000 41e81000 427048d0 0x008838d0(8927440)
大对象堆从0x02881000
段开始分配大小
02880000 02881000 02a36958 0x001b5958(1792344)
13010000 13011000 137c0020 …

.net memory-leaks windbg managed sos

4
推荐指数
1
解决办法
579
查看次数

一旦ThreadPool线程完成其工作,就调用一个方法

我必须在ThreadPool上运行一些代码作为单独的线程.

ThreadPool.QueueUserWorkItem(MyMethod,MyObjects);
Run Code Online (Sandbox Code Playgroud)

一旦MyMethod完成,我需要运行另一个方法MyMethod2.我怎样才能做到这一点?

c# multithreading threadpool

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

我可以对NULLable字段进行唯一约束吗?

我有一张下面的表格

CREATE TABLE MyTable  
(  
  ID                INTEGER DEFAULT(1,1),  
  FirstIdentifier   INTEGER NULL,  
  SecondIdentifier  INTEGER NULL,  
--.... some other fields .....  
) 
Run Code Online (Sandbox Code Playgroud)

现在,FirstIdentifier和SecondIdentifier中的每一个都是唯一但可以为NULL的.我想在每个列上放置一个唯一的约束,但不能这样做,因为它的NULLable可以有两行,其中NULL值会使这些唯一约束失败.有关如何在架构级别上解决它的任何想法?

sql-server sql-server-2008

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

以下声明有什么问题

这个陈述有什么问题?当在LinqPad中运行语言设置为"C#Statement"时,我得到"; expect".

from p in Products where p.UnitPrice > 50 select new {p.ProductID };
Run Code Online (Sandbox Code Playgroud)

现在好像我将它分配给任何var; 我没有得到任何错误.但我觉得令人困惑的是下面的声明工作正常并给我结果,虽然我没有将它分配给任何变量.有任何想法吗?

    from p in Products
let spanishOrders = p.OrderDetails.Where ( o=> o.Order.ShipCountry == "Spain")
where spanishOrders.Any()
group new
{
    p.ProductName,
    Orders = spanishOrders.Count(),
    spanishOrders
}
by p.Category.CategoryName
Run Code Online (Sandbox Code Playgroud)

编辑:这是我的不好实际上我不能运行第二个例子而不将其分配给变量.

c# linq linqpad linq-to-sql

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

异常处理程序导致任何性能降级?

如果我有一段代码可以做这样的事情.

try
{
...
}
catch(Exception ex)
{
throw;
}
Run Code Online (Sandbox Code Playgroud)

事实上,在catch块中我们只进行了抛出,我似乎无法找到这个特殊异常处理程序的任何优点.这个不必要的捕获导致代码流是否有任何性能问题?

c# exception-handling

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

使用var有任何副作用吗?

可能重复:
C#'var'与特定类型性能

如果我写行,是否有任何性能成本(在类型转换方面等)

SqlConnection c = new SqlConnection(connectionString))
Run Code Online (Sandbox Code Playgroud)

var c = new SqlConnection(connectionString))
Run Code Online (Sandbox Code Playgroud)

c# var

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

尽管指向Microsoft符号服务器,但获取符号相关错误

尝试在Windbg中调试转储文件.它是一个托管与一些Microsoft本机库互操作.我已设置符号路径.sympath SRV*c:\ SymbolsCash*http://msdl.microsoft.com/download/symbols.

我没有任何问题加载SOS.我可以运行sos命令而不会出现任何错误.我也可以运行大部分Windbg命令(如〜,kb,.time等),但是对于某些命令(例如,!address -summary),我得到以下错误.

您的调试器未使用正确的符号
为了使此命令正常工作,您的符号路径
必须指向具有完整类型信息的.pdb文件.

某些.pdb文件(例如公共OS符号)不
包含所需信息.
如果需要此命令,请与提供这些符号的组联系
.
引用类型:ntdll!_NT_TIB

我在这里缺少什么想法?

debugging windbg

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