小编Mar*_*age的帖子

exit()和abort()有什么区别?

在C和C++中,exit()和之间有什么区别abort()?我试图在错误后结束我的程序(不是例外).

c c++ error-handling exit abort

127
推荐指数
5
解决办法
6万
查看次数

如何在Win32应用程序中打印到调试输出窗口?

我有一个win32项目,我已经加载到Visual Studio 2005中.我希望能够将内容打印到Visual Studio输出窗口,但我不能为我的生活找出方法.我试过'printf'和'cout <<',但是我的信息一直没有打印.

是否有某种特殊的方式来打印到Visual Studio输出窗口?

c++ console winapi visual-studio-2005 visual-studio

86
推荐指数
6
解决办法
19万
查看次数

使用ASP.NET路由提供静态文件

可以使用ASP.Net路由(而不是MVC)来提供静态文件吗?

说我想路线

http://domain.tld/static/picture.jpg
Run Code Online (Sandbox Code Playgroud)

http://domain.tld/a/b/c/picture.jpg
Run Code Online (Sandbox Code Playgroud)

我想动态地做这件事,因为重写的URL是动态计算的.我无法一劳永逸地建立静态路线.

无论如何,我可以创建这样的路线:

routes.Add(
  "StaticRoute", new Route("static/{file}", new FileRouteHandler())
);
Run Code Online (Sandbox Code Playgroud)

FileRouteHandler.ProcessRequest方法我可以重写从路径/static/picture.jpg/a/b/c/picture.jpg.然后我想为静态文件创建一个处理程序.ASP.NET使用它StaticFileHandler来实现此目的.不幸的是,这堂课是内部的.我试图使用反射创建处理程序,它实际上工作:

Assembly assembly = Assembly.GetAssembly(typeof(IHttpHandler));
Type staticFileHandlerType = assembly.GetType("System.Web.StaticFileHandler");
ConstructorInfo constructorInfo = staticFileHandlerType.GetConstructor(BindingFlags.NonPublic | BindingFlags.Instance, null, Type.EmptyTypes, null);
return (IHttpHandler) constructorInfo.Invoke(null);
Run Code Online (Sandbox Code Playgroud)

但使用内部类型似乎不是正确的解决方案.另一个选择是实现我自己的StaticFileHandler,但正确地这样做(支持范围和etags等HTTP的东西)是非常重要的.

我该如何处理ASP.NET中静态文件的路由?

asp.net url-routing

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

TypeCasting的表现

两者之间是否有任何可测量的性能差异

((TypeA) obj).method1();
((TypeA) obj).method2();
((TypeA) obj).method3();
Run Code Online (Sandbox Code Playgroud)

var A = (TypeA) obj;
A.method1();
A.method2();
A.method3();
Run Code Online (Sandbox Code Playgroud)

什么时候使用?

我经常看到类似的东西

if (((TextBox)sender).Text.Contains('.') || ((TextBox)sender).Text.Contains(','))
Run Code Online (Sandbox Code Playgroud)

并想知道这是否是对性能的浪费.

.net c# performance types

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

代码分析CA1063在从IDisposable派生并在基类中提供实现时触发

我有一些代码会触发代码分析警告CA1063:

CA1063:Microsoft.Design:从"功能"实现的接口列表中删除IDisposable,并覆盖基类Dispose实现.

但是,我不确定我需要做些什么才能修复此警告.

简而言之,我有一个IFunctionality源自的界面IDisposable.类Functionality实现IFunctionality但是从类派生Reusable以便能够重用som代码.类Reusable也来源于IDisposable.

public class Reusable : IDisposable {

  ~Reusable() {
    Dispose(false);
  }

  public void Dispose() {
    Dispose(true);
    GC.SuppressFinalize(this);
  }

  protected virtual void Dispose(Boolean disposing) {
    // ...
  }

  public void DoSomething() {
    // ...
  }

}

public interface IFunctionality : IDisposable {

  void DoSomething();

  void DoSomethingElse();

}

public class Functionality : Reusable, IFunctionality {

  public void DoSomethingElse() {
    // ...
  }

#if WORK_AROUND_CA1063
  // …
Run Code Online (Sandbox Code Playgroud)

c# code-analysis idisposable

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

捕获的.NET异常意外地为空

请参阅下文,了解正在进行的操作

我有一个非常奇怪的问题,捕获的异常是null.

该代码使用MEF并努力报告组合错误.使用调试器我可以看到抛出异常(a InvalidOperationException)但是当它被下面代码中的最后一个catch块捕获时,ex变量为null.在调试器和正常执行代码时都是如此.

static T ResolveWithErrorHandling<T>() where T : class
{
    try
    {
        IocContainer.Compose(Settings.Default.IocConfiguration);
        return IocContainer.Resolve<T>();
    }
    catch (ReflectionTypeLoadException ex)
    {
        // ... special error reporting for ReflectionTypeLoadException
    }
    catch (Exception ex)
    {
        // ex is null - that should not be possible!
        // ... general error reporting for other exception types
    }
    return null;
}
Run Code Online (Sandbox Code Playgroud)

我用注释替换的代码是格式化错误消息的非常简单的代码.那里没什么奇怪的.

我试图改变代码以发现可能产生的影响:

  • 如果我删除第一个catch块(ReflectionTypeLoadException),则最终catch块中捕获的异常不再为null.
  • 如果我在第一个catch块中捕获另一个异常类型,则最终catch块中捕获的异常不再为null.
  • 如果我InvalidOperationException为第一个catch块添加一个catch块,则该块中捕获的异常不为null.
  • 如果我InvalidOperationException在两个catch块之间添加一个catch块,则该块中捕获的异常为null.

该项目使用代码契约,并对编译器生成的代码进行后处理以检查合同.不幸的是,我没有找到一种方法来摆脱测试目的,而不对项目进行大手术.

我目前的解决方法是不捕获ReflectionTypeLoadException并改为分支ex一般异常处理程序中的类型. …

c# exception-handling mef code-contracts

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

在C#中访问Process.MainModule.FileName时如何避免Win32异常?

我开始了一个新项目,列出了所有正在运行的进程的完整路径.当访问某些进程时,程序崩溃并抛出Win32Exception.描述说明列出流程模块时发生错误.最初我认为这个问题可能会发生,因为我在64位平台上运行它,所以我重新编译它为CPU类型x86AnyCPU.不过,我遇到了同样的错误.

Process p = Process.GetProcessById(2011);
string s = proc_by_id.MainModule.FileName;
Run Code Online (Sandbox Code Playgroud)

错误发生在第2行.空白字段显示发生错误的进程: 截图

有没有办法绕过这个错误信息?

c# windows exception process

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

如何在WPF中计算非客户端窗口大小?

WPF有SystemParameters暴露系统指标的大量.在我的电脑上,我注意到普通窗口的标题高度为30像素,边框宽度为8像素.这是在Windows 7上启用了Aero主题:

非客户区 -  Aero

但是,SystemParameters返回以下值:

SystemParameters.BorderWidth = 5
SystemParameters.CaptionHeight = 21
Run Code Online (Sandbox Code Playgroud)

在这里,我禁用了Aero主题:

非客户区 - 经典

现在,SystemParameters返回以下值:

SystemParameters.BorderWidth = 1
SystemParameters.CaptionHeight = 18
Run Code Online (Sandbox Code Playgroud)

如何使用SystemParameters?计算实际观测值?

.net c# windows wpf winapi

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

如何使类在Typescript中实现调用签名?

我在typescript中定义了以下接口:

interface MyInterface {
    () : string;
}
Run Code Online (Sandbox Code Playgroud)

该接口简单地引入了一个不带参数的调用签名并返回一个字符串.如何在类中实现此类型?我尝试过以下方法:

class MyType implements MyInterface {
    function () : string {
        return "Hello World.";
    }
}
Run Code Online (Sandbox Code Playgroud)

编译器一直告诉我

类'MyType'声明接口'MyInterface'但没有实现它:Type'MyInterface'需要一个调用签名,但Type'MyType'缺少一个

如何实现呼叫签名?

typescript

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

Rx:我如何立即响应,并限制后续请求

我想建立一个可以立即响应事件的Rx订阅,然后忽略在指定的"冷却"时段内发生的后续事件.

开箱即用的Throttle/Buffer方法仅在超时过后响应,这不是我需要的.

下面是一些设置场景的代码,并使用Throttle(这不是我想要的解决方案):

class Program
{
    static Stopwatch sw = new Stopwatch();

    static void Main(string[] args)
    {
        var subject = new Subject<int>();
        var timeout = TimeSpan.FromMilliseconds(500);

        subject
            .Throttle(timeout)
            .Subscribe(DoStuff);

        var factory = new TaskFactory();

        sw.Start();

        factory.StartNew(() =>
        {
            Console.WriteLine("Batch 1 (no delay)");
            subject.OnNext(1);
        });

        factory.StartNewDelayed(1000, () =>
        {
            Console.WriteLine("Batch 2 (1s delay)");
            subject.OnNext(2);
        });

        factory.StartNewDelayed(1300, () =>
        {
            Console.WriteLine("Batch 3 (1.3s delay)");
            subject.OnNext(3);
        });

        factory.StartNewDelayed(1600, () =>
        {
            Console.WriteLine("Batch 4 (1.6s delay)");
            subject.OnNext(4);
        });

        Console.ReadKey();
        sw.Stop();
    }

    private static void …
Run Code Online (Sandbox Code Playgroud)

c# system.reactive

27
推荐指数
3
解决办法
5572
查看次数