最近我注意到我的应用程序似乎正在吃掉永不释放的内存.在使用CLRProfiler进行分析后,我发现我使用的Castle Windsor容器正在抓住物体.这些对象在config xml中使用lifestyle ="transient"属性声明.
我发现如果我明确调用IWindsorContainer.Release(hangingObject)它会丢弃它的引用.
这引起了一个问题,我并没有想到,对于一个短暂的生活方式对象,CastleWindsor会保留一个引用并有效地创建泄漏.这将是一个相当普通且容易出错的任务,在所有适当的位置插入显式的Release调用.
你有没有看到这个问题,你有什么建议可以解决这个问题吗?
我正在写一个msbuild .targets文件,在其中我想使用zip任务压缩一些我知道相对于.targets文件位置的文件.
当我直接执行.target文件时,这可以正常工作.但是,当我将.targets文件包含在另一个目录中的.proj文件中时,相对路径将相对于.proj文件而不是.targets文件进行解析.
有没有办法可以指定相对于我写的文件的相对路径?
我见过这个相关的问题:
我想到的解决方法是执行以下操作.我还没有尝试过.它会起作用吗,有更好的方法吗?
my.proj
<Import Project="..\Somewhere\my.targets"/>
<PropertyGroup>
<MyTargetsYouAreHere>$(MSBuildProjectDirectory)\..\Somewhere</MyTargetsYouAreHere>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
my.targets
<Message Text="my.targets is here '$(MyTargetsYouAreHere)'" />
Run Code Online (Sandbox Code Playgroud) 我正在使用C#并通过自动生成的C#代理对象连接到WebService.我打电话的方法可以长时间运行,有时会超时.我得到了不同的错误,有时我会得到一个System.Net.WebException或一个System.Web.Services.Protocols.SoapException.这些异常具有我可以查询的属性,以查找特定类型的错误,我可以从中向用户显示人性化版本.
但有时我只是得到一个InvalidOperationException,它有以下消息.有没有什么方法可以解释这是什么,如果不通过字符串挖掘我认识的东西,感觉非常脏,并且不是国际化不可知,错误信息可能会以不同的语言回来.
Client found response content type of 'text/html; charset=utf-8', but expected 'text/xml'.
The request failed with the error message:
--
<html>
<head>
<title>Request timed out.</title>
<style>
body {font-family:"Verdana";font-weight:normal;font-size: .7em;color:black;}
p {font-family:"Verdana";font-weight:normal;color:black;margin-top: -5px}
b {font-family:"Verdana";font-weight:bold;color:black;margin-top: -5px}
H1 { font-family:"Verdana";font-weight:normal;font-size:18pt;color:red }
H2 { font-family:"Verdana";font-weight:normal;font-size:14pt;color:maroon }
pre {font-family:"Lucida Console";font-size: .9em}
.marker {font-weight: bold; color: black;text-decoration: none;}
.version {color: gray;}
.error {margin-bottom: 10px;}
.expandable { text-decoration:underline; font-weight:bold; color:navy; cursor:hand; }
</style>
</head>
<body bgcolor="white">
<span><H1>Server Error in …Run Code Online (Sandbox Code Playgroud) 某些东西,可能是windows sdk或visual studio安装程序,已定义了Platform环境变量,并为其赋予了值BNB.
BNB是什么意思,为什么平台设置为BNB?
谢谢.
我见过这个,但它没有回答我的问题:
http://social.msdn.microsoft.com/Forums/en-US/msbuild/thread/1d229d75-aa89-42bf-809b-ef98f42072bb
在VS2013更新5中,我有这个:
class Lock
{
public:
Lock(CriticalSection& cs) : cs_(cs)
{}
Lock(const Lock&) = delete;
Lock(Lock&&) = delete;
Lock& operator=(const Lock&) = delete;
Lock& operator=(Lock&&) = delete;
~Lock()
{
LeaveCriticalSection(&(cs_.cs_));
}
private:
CriticalSection& cs_;
};
class CriticalSection
{
CRITICAL_SECTION cs_;
public:
CriticalSection(const CriticalSection&) = delete;
CriticalSection& operator=(const CriticalSection&) = delete;
CriticalSection(CriticalSection&&) = delete;
CriticalSection& operator=(CriticalSection&&) = delete;
CriticalSection()
{
InitializeCriticalSection(&cs_);
}
~CriticalSection()
{
DeleteCriticalSection(&cs_);
}
// Usage: auto lock = criticalSection.MakeLock();
Lock MakeLock()
{
EnterCriticalSection(&cs_);
return Lock(*this);
}
}
Run Code Online (Sandbox Code Playgroud)
MakeLock返回不可移动,不可复制类型的实例.这似乎工作正常.但是,Visual …
我正在使用Microsoft SQL Server Management Studio连接到数据库.在其中我有一个表,其中一列是包含文件数据的Image列.另一列是包含文件名的字符串.
有什么方法可以编写一些sql脚本,允许我选择一条记录并将这些数据写入文件?或者,如果这不可能,那么实现这一目标的简单方法是什么?
我已经看到了这个相关的问题,但它看起来并不完全相同:在sql-server 2000中将图像列保存到文件中
使用msbuild执行此操作:
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Main" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Colors Include="Blue">
<Shade>Dark</Shade>
</Colors>
</ItemGroup>
<Target Name="Main">
<Message Text="Color: %(Colors.Shade) %(Colors.Identity)"/>
</Target>
</Project>
Run Code Online (Sandbox Code Playgroud)
它输出:
Color: Dark Blue
Run Code Online (Sandbox Code Playgroud)
一切都很好,但删除颜色并使用此:
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Main" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
</ItemGroup>
<Target Name="Main">
<Message Text="Color: %(Colors.Shade) %(Colors.Identity)"/>
</Target>
</Project>
Run Code Online (Sandbox Code Playgroud)
它输出:
Color:
Run Code Online (Sandbox Code Playgroud)
当组中没有项目时,为什么要执行一批Message任务?我原本期望零项目,批次将执行零次,我不会看到"颜色:"输出中没有任何内容.
我做错了什么或有解决方法吗?
谢谢.
更新:我发现你可以这样做:
<Message Condition="'@(Colors)'!=''" Text="Color: %(Colors.Shade) %(Colors.Identity)"/>
Run Code Online (Sandbox Code Playgroud)
但是,如果在每次使用批处理时没有项目时必须明确地为代码编写代码感到不满意.
如果我们使用ASLR,那么我认为在我们的构建期间重新设置我们的dll是没有意义的,因为当内核加载时dll会再次被重新设置?
我担心我们的应用程序经常用在终端服务机器上.因此,如果在加载时发生重新定位,我们最终可能会为每个加载的进程重新设置dll(每个会话将有一个进程).这将导致更多的内存使用和分页,而不是我们想要支付的.我需要担心吗?
我发现以下博客文章说,变基只发生一次,它是系统范围的:Matt Evans - 启用ASLR节省内存?.我没有看到任何其他关于此的引用,所以只是想确定我是否使用ASLR并且在构建期间不进行rebase我不会在终端服务盒上导致内存问题?
如果一个线程正在做这样的事情:
const DWORD interval = 20000;
DWORD ticks = GetTickCount();
while(true)
{
DoTasksThatTakeVariableTime();
if( GetTickCount() - ticks > interval )
{
DoIntervalTasks();
ticks = GetTickCount();
}
}
Run Code Online (Sandbox Code Playgroud)
最终,当值不适合DWORD时,ticks将会换行.
我和同事一直在讨论这件事.我们中的一个人认为,当发生换行时,代码仍会表现得很"漂亮",因为减法操作也会换行.我们其他人认为它并不总是有效,特别是如果间隔很大.
谁是对的,为什么?
谢谢.
我是代码审查同事代码并发现:
头文件:
template<class T>
class MyClass
{
void Execute();
}
Run Code Online (Sandbox Code Playgroud)
Cpp文件:
void MyClass<int>::Execute()
{
// something
}
void MyClass<string>::Execute()
{
// something else
}
Run Code Online (Sandbox Code Playgroud)
代码专门用于函数,但不使用模板特化语法.我猜它工作正常,但它有效吗?