小编Joh*_*ohn的帖子

将EXE文件添加到项目中,以便将其像DLL一样复制到Bin/Debug文件夹中?

我需要我的C#项目在执行期间启动另一个EXE程序.这个可执行文件需要放在与构建解决方案的C#程序相同的文件夹中,例如,调试文件夹 - 就像DLL文件引用一样 - 这样当我的团队成员从TFS检查项目时, debug,当我的C#代码试图调用它时发现EXE.

但是,EXE本身并不是引用,因此它不能作为引用添加,即使我希望以与引用相同的方式复制它.

这个问题有合理的解决方案吗?

提前致谢.

c# tfs visual-studio-2010

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

双重或三重"点击选择文字"功能的约定?

几乎任何涉及文本的成熟程序都实现了"双击以选择单词",并且在某些情况下,"三次单击以选择像整行一样的其他内容"作为特征.我发现这些功能很有用,但它们在程序之间往往不一致.

示例 - 某些程序的双击不会选择单词后面的结束空格,但大多数程序都会这样做.有些人认为 - 字符是单词的结尾,有些则不然.我喜欢选择整个段落,因为当我三次点击它时,我写这篇文章,VS web开发人员2005没有三重点击支持,而超编辑32将在三次点击时选择一行.我们可以提出关于如何跨程序实现双击和三击模式匹配的无数不一致.

如果没有其他人达成关于模式匹配应该如何工作的约定,担心如何在我的程序中实现这种行为.

我的问题是,是否存在一个约定(约定?可能是MS或Linux约定?),它们规定了这些特性应该如何对最终用户起作用?它们是什么,如果有的话?

user-interface conventions

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

system.threading.task - 为什么不发生TaskScheduler.UnobservedTaskException事件?我能解决这个问题吗?

我见过的一个常见问题是管理任务中未处理的异常.它们不会导致崩溃,它们会无声地发生,我甚至无法在任务失败时触发事件!我已经看到用户开出自定义类和处理这个的东西,我的问题是,是否有一种"标准"的微软方式来处理这个问题?

为了举例,我制作了这个简单的控制台应用程序(.NET 4.5.1)来演示这个问题.是否可以修改这些任务以便可以异步执行这些任务,但在遇到未处理的异常时调用"handler"?或者至少崩溃?我认为这就是UnobservedTaskException应该做的事情.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication4
{
class Program
{
    static void Main(string[] args)
    {
        TaskScheduler.UnobservedTaskException += Handler;
        AppDomain.CurrentDomain.UnhandledException += Handler;
        Task.Run(() => { throw new ApplicationException("I'll throw an unhandled exception"); });
        Task.Factory.StartNew(() => { throw new ApplicationException("I'll throw an unhandled exception too"); });
        System.Threading.Thread.Sleep(2000);
        Console.WriteLine("I think everything is just peachy!");
        System.Threading.Thread.Sleep(10000);
    }
    private static void Handler(Object sender, EventArgs e)
    {
        Console.WriteLine("I'm so lonely, won't anyone call me?");
    }
}
} …
Run Code Online (Sandbox Code Playgroud)

c# task-parallel-library

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

从多个线程到一个同步线程的调度工作

假设我有10个线程忙着做某事他们有时会调用一个方法

public HandleWidgets(Widget w) {  HeavyLifting(w) }
Run Code Online (Sandbox Code Playgroud)

但是,我不希望我的10个线程在HeavyLifting(w)上等待,而是将HeavyLifting(w)工作分配给第11个线程,即HeavyLifter线程并以异步方式继续.调度的HeavyLifter线程应该始终是同一个线程,我不想创建多个线程(因此,我不能做这样的事情:没有EndInvoke的C#异步调用?).

HeavyLifting(w)是"发射并忘记",因为调用HandleWidgets()的线程不需要回调或类似的东西.

这有什么健康的做法?

.net c# multithreading

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

为什么左连接导致NEWID()比加入更快实现?

使用MSSQL Server 2008企业版,以及很可能是其他版本的MSSQL,这里是一个概念证明,它使得临时表和具体化的NEWID()取决于您是否使用了JOIN或LEFT JOIN,即使我们匹配两行究竟.

如果查看执行计划,可以看到使用JOIN最后执行获取NEWID()的计算标量,但在使用LEFT JOIN时则不会.我原本期望LEFT JOIN行为.这种怪异是由于执行计划中的天真还是还有更多的事情发生?

Temp表的演示:

Create Table #Temp
(
    ChildGuid uniqueidentifier,
    ParentGuid uniqueidentifier
)
insert into #Temp (ChildGuid, ParentGuid) Values('5E3211E8-D382-4775-8F96-041BF419E70F', '96031FA0-829F-43A1-B5A6-108362A37701')
insert into #Temp (ChildGuid, ParentGuid) Values('FFFFFFFF-D382-4775-8F96-041BF419E70F', '96031FA0-829F-43A1-B5A6-108362A37701')

--Use a join. Get different NewIDs.
select * from #Temp 
join 
(
    select ParentGuid, NewParentGuid from(
    select ParentGuid, NEWID() as NewParentGuid from #Temp
    group by ParentGuid
    ) tb2
) temp2 on #Temp.ParentGuid = temp2.ParentGuid

--Do exactly as above, but use a left join. Get a pair of the same …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server

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

最好的REGEXP友好文本编辑器+最强大的REGEXP语法?

我熟练使用Microsoft Visual 2005正则表达式,它们可以节省大量时间.

我似乎通过向我扔一个模糊的有组织的备忘单来学习它们,此时我只是阅读了一点并与它们一起玩,直到我明白发生了什么.到目前为止,这种学习方法对我来说效果很好.

我真的想把它提升到一个新的水平.基本上 -

  1. 什么是REGEXP惯例,通常被认为是最开放和最强大的?VS2005 Regexps看起来有点像gimped,所以也许我是个小孩在沙盒里玩.

  2. 是否有文本编辑器可以执行突出显示所有匹配,列出包含字符串的行,或者与最强大的REGEXP语言一起使用的某种强大功能?如果不是,我可以只使用多个程序和一个奇怪的技术,但我想避免这种情况.

我想知道一个更强大的REGEXP语言或"更强大"的regEXP作家是否能够让他的搜索匹配所有行的所有结果,即使通过在搜索中添加一些简单的标准来点击"查找下一个".

无论如何,请提供建议!

regex editor

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

使字段只能访问其对应的属性?

假设我们有一个私人支持字段和一个公开该字段的私有财产。如果任何代码(甚至类中的代码)尝试访问或修改除属性以外的字段,而没有将字段和属性封装在自己的对象中,则C#是否支持属性或任何其他语法来强制编译器错误?请在下面看到一个简单的例子。

/// <summary>
/// Class to cache and quickly access data. Please only use this class if 1) the data to be cached  uses little memory and 2) the number of DB reads is high and could cause a performance strain.
/// </summary> 
class BMIDataCache
{
    #region fields
        protected static BMITimedDictionary<String, Device> _devices;
    #endregion

    #region properties
    protected static BMITimedDictionary<String, Device> Devices
    {
        get
        {
            if (_devices == null)
            { 
                _devices = new BMITimedDictionary<String, Device>();
                //Do some other stuff later.
            } …
Run Code Online (Sandbox Code Playgroud)

.net c#

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