我正在WPF中编写一个模态对话框.如何将WPF窗口设置为没有关闭按钮?我仍然希望它的WindowState有一个普通的标题栏.
我找到了ResizeMode,WindowState和WindowStyle,但这些属性都不允许我隐藏关闭按钮但显示标题栏,就像在模态对话框中一样.
我有以下代码抛出异常:
ThreadPool.QueueUserWorkItem(state => action());
Run Code Online (Sandbox Code Playgroud)
当操作抛出异常时,我的程序崩溃了.处理这种情况的最佳做法是什么?
我对List Sort方法如何处理排序有疑问.鉴于以下要素:
class Element : IComparable<Element>
{
public int Priority { get; set; }
public string Description { get; set; }
public int CompareTo(Element other)
{
return Priority.CompareTo(other.Priority);
}
}
Run Code Online (Sandbox Code Playgroud)
如果我尝试这样排序:
List<Element> elements = new List<Element>()
{
new Element()
{
Priority = 1,
Description = "First"
},
new Element()
{
Priority = 1,
Description = "Second"
},
new Element()
{
Priority = 2,
Description = "Third"
}
};
elements.Sort();
Run Code Online (Sandbox Code Playgroud)
然后第一个元素是先前的第二个元素"Second".或者,换句话说,这个断言失败了:
Assert.AreEqual("First", elements[0].Description);
Run Code Online (Sandbox Code Playgroud)
当元素基本相同时,为什么.NET重新排序我的列表?如果比较返回非零值,我希望它只对列表重新排序.
我有以下msbuild脚本将整个DeploymentDirectory复制到VersionSpecificDirectory.这是片段:
<CreateItem Include="$(DeploymentDirectory)/**/*.*" >
<Output ItemName="AllDeploymentFilesToCopy" TaskParameter="Include" />
</CreateItem>
<Copy SourceFiles="@(AllDeploymentFilesToCopy)"
DestinationFiles="@(AllDeploymentFilesToCopy->'$(VersionSpecificDirectory)\%(RecursiveDir)%(Filename)%(Extension)')" />
Run Code Online (Sandbox Code Playgroud)
脚本用于复制DeploymentDirectory中的所有文件而不是目录本身的内容是什么?
更新:我尝试将斜杠的方向更改为反斜杠,问题仍然存在.
另一个更新:这与msbuild代码无关.我的问题中的代码和答案中的代码都可以正常工作.
我是一名试图学习C++的C#/ Java开发人员.当我尝试学习指针的概念时,我很惊讶以前我必须处理这个概念.如何仅使用.NET或Java开发人员熟悉的概念来解释指针?我是否真的从来没有处理过这个问题,它只是隐藏在我身上,还是我一直都在使用它而不称之为?
我刚刚升级到Resharper 4.5,现在看到我的所有BDDish测试方法都被标记为不符合命名标准.我的命名约定是这样的:
public void Something_ShouldHaveThisResult()
Run Code Online (Sandbox Code Playgroud)
Resharper不喜欢该方法中的下划线.有没有办法将其关闭,仅用于测试方法?我对其余代码有一个正常的命名约定.
我有一个计时器,不需要同时处理其已用的事件处理程序.但处理一个Elapsed事件可能会干扰其他事件.我实施了以下解决方案,但感觉不对劲; 似乎要么我应该使用不同的计时器,要么在线程空间内使用另一个对象.计时器似乎最合适,因为我确实需要定期检查状态,但有时检查将花费比我的间隔更长的时间.这是解决这个问题的最佳方法吗?
// member variable
private static readonly object timerLock = new object();
private bool found = false;
// elsewhere
timer.Interval = TimeSpan.FromSeconds(5).TotalMilliseconds;
timer.Elapsed = Timer_OnElapsed;
timer.Start();
public void Timer_OnElapsed(object sender, ElapsedEventArgs e)
{
lock(timerLock)
{
if (!found)
{
found = LookForItWhichMightTakeALongTime();
}
}
}
Run Code Online (Sandbox Code Playgroud) 我知道这听起来像是一个主观的答案,但我会尽量使问题尽可能客观,因为对这个问题的客观答案将是最有帮助的.
我最近有一位代码审查员指出,我习惯在我的方法结束时加入介词.这是我作为类的扩展方法编写的最新方法Point
:
var rectangle = new Rectangle(0, 0, 2, 2);
var point = new Point(3, 1);
var result = point.DistanceTo(rectangle);
Run Code Online (Sandbox Code Playgroud)
我的代码审查员提到该方法应该是point.Distance(rectangle)
.我一直认为这是主观的,也是风格问题.但是,我注意到更多的.NET API设计朝这个方向发展.例如,使用NUnit的Fluent Interface,您可以:
Assert.That(result, Is.EqualTo(1.0));
Run Code Online (Sandbox Code Playgroud)
我也和Linq见过这个:
list.CopyTo(anotherList);
list.IndexOf(item);
list.RemoveAt(0);
Run Code Online (Sandbox Code Playgroud)
.NET和/或第三方API设计人员在方法结束时使用介词是否有任何稳定或一致的方式?或者只是风格和主观问题?.NET框架中的API设计本身是否随着此策略发展,或者它是否始终存在?
我想将我的dotnet核心项目配置为单个可执行文件进行编译.
该项目类似于生成的项目dotnet new
:
{
"version": "1.0.0-*",
"buildOptions": {
"debugType": "portable",
"emitEntryPoint": true
},
"dependencies": {},
"frameworks": {
"netcoreapp1.1": {
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.1.0"
}
},
"imports": "dnxcore50"
}
},
"runtimes": {
"win10-x64": {}
}
}
Run Code Online (Sandbox Code Playgroud)
我怎么能这样编译成一个program.exe?当我运行dotnet publish
它时,将dll和program.exe放在发布文件夹中,但不会将它们组合在一起.