小编Mic*_*eth的帖子

如何在WPF窗口中隐藏关闭按钮?

我正在WPF中编写一个模态对话框.如何将WPF窗口设置为没有关闭按钮?我仍然希望它的WindowState有一个普通的标题栏.

我找到了ResizeMode,WindowState和WindowStyle,但这些属性都不允许我隐藏关闭按钮但显示标题栏,就像在模态对话框中一样.

wpf xaml dialog button

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

我如何选择Semaphore和SemaphoreSlim?

他们的公共界面看似相似.该文档指出SemaphoreSlim是一种轻量级替代方案,不使用Windows内核信号量. 该资源表明SemaphoreSlim速度更快.SemaphoreSlim在什么情况下对信号量更有意义,反之亦然?

c# multithreading semaphore

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

如何从ThreadPool.QueueUserWorkItem中捕获异常?

我有以下代码抛出异常:

ThreadPool.QueueUserWorkItem(state => action());
Run Code Online (Sandbox Code Playgroud)

当操作抛出异常时,我的程序崩溃了.处理这种情况的最佳做法是什么?


相关:.Net ThreadPool线程的例外

.net c# multithreading threadpool

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

为什么List <T> .Sort方法重新排序相同的IComparable <T>元素?

我对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重新排序我的列表?如果比较返回非零值,我希望它只对列表重新排序.

.net c# sorting quicksort

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

如何使用msbuild复制任务指定文件夹结构

我有以下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代码无关.我的问题中的代码和答案中的代码都可以正常工作.

.net msbuild

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

你如何解释C#/ Java开发人员的C++指针?

我是一名试图学习C++的C#/ Java开发人员.当我尝试学习指针的概念时,我很惊讶以前我必须处理这个概念.如何仅使用.NET或Java开发人员熟悉的概念来解释指针?我是否真的从来没有处理过这个问题,它只是隐藏在我身上,还是我一直都在使用它而不称之为?

c# c++ java pointers

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

如何在Resharper 4.5中使用bdd命名风格?

我刚刚升级到Resharper 4.5,现在看到我的所有BDDish测试方法都被标记为不符合命名标准.我的命名约定是这样的:

public void Something_ShouldHaveThisResult()
Run Code Online (Sandbox Code Playgroud)

Resharper不喜欢该方法中的下划线.有没有办法将其关闭,仅用于测试方法?我对其余代码有一个正常的命名约定.

c# bdd resharper

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

如何在处理已用事件时阻止计时器?

我有一个计时器,不需要同时处理其已用的事件处理程序.但处理一个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)

.net c# multithreading timer

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

包含方法名称末尾的介词是否遵循或减损了正常的C#API设计?

我知道这听起来像是一个主观的答案,但我会尽量使问题尽可能客观,因为对这个问题的客观答案将是最有帮助的.

我最近有一位代码审查员指出,我习惯在我的方法结束时加入介词.这是我作为类的扩展方法编写的最新方法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设计本身是否随着此策略发展,或者它是否始终存在?

c# fluent-interface naming-conventions

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

如何创建一个dotnet核心单个可执行文件

我想将我的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放在发布文件夹中,但不会将它们组合在一起.

.net .net-core asp.net-core

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