小编Jam*_*rld的帖子

.NET,事件每分钟(分钟).计时器是最好的选择吗?

我希望使用c#在Windows窗体应用程序中按分钟(按时钟)每分钟做一些事情.我只是想知道最好的方法是什么?

我可以使用一个计时器并将其间隔设置为60000,但为了让它在一分钟内运行,我必须准确地启用它,而不是真的可行.

我可以使用一个计时器并将其间隔设置为1000.然后在其tick事件中,我可以根据我设置的变量检查当前时钟,如果分钟已经改变,则运行我的代码.这让我很担心,因为我让我的电脑每1秒做一次检查,以便每1分钟进行一次工作.当然这很难看?

我正在使用Windows窗体和.Net 2.0,因此不想使用.Net 3.5附带的DispatchTimer

这一定是一个相当普遍的问题.你有没有更好的方法来做到这一点?

c# timer system.reactive

39
推荐指数
7
解决办法
6万
查看次数

如何在ASP.NET MVC 4 Web API中测试自定义DelegatingHandler?

我已经看到这个问题出现在一些地方,没有看到任何好的答案.因为我必须自己做几次,我以为我会发布我的解决方案.如果你有更好的,请发布.

NB这是使用ASP.NET MVC 4 Beta 2版本的Web API - 未来的版本可能会改变!

更新:这仍然适用于ASP.NET MVC 4 RC

c# asp.net-mvc unit-testing asp.net-mvc-4 asp.net-web-api

32
推荐指数
2
解决办法
9360
查看次数

如何使用Observable.FromEvent而不是FromEventPattern并避免使用字符串文字事件名称

我正在WinForms中学习Rx,并拥有以下代码:

// Create an observable from key presses, grouped by the key pressed
var groupedKeyPresses = Observable.FromEventPattern<KeyPressEventArgs>(this, "KeyPress")
                                  .Select(k => k.EventArgs.KeyChar)
                                  .GroupBy(k => k);

// Increment key counter and update user's display
groupedKeyPresses.Subscribe(keyPressGroup =>
{
    var numPresses = 0;
    keyPressGroup.Subscribe(key => UpdateKeyPressStats(key, ++numPresses));
});
Run Code Online (Sandbox Code Playgroud)

这可以完美地工作/运行,在KeyPress事件中流,按键推送组,然后跟踪每个键被按下的次数,并UpdateKeyPressStats使用键和新的按键数调用方法.装运它!

但是,FromEventPattern由于对事件的字符串文字引用,我不是签名的粉丝.所以,我想我会尝试一下FromEvent.

// Create an observable from key presses, grouped by the key pressed
var groupedKeyPresses = Observable.FromEvent<KeyPressEventHandler, KeyPressEventArgs>(h => this.KeyPress += h, h => this.KeyPress -= h)
                                  .Select(k => …
Run Code Online (Sandbox Code Playgroud)

.net winforms system.reactive

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

如何停止显示log4net输出的记录器名称的Visual Studio Output窗口?

我正在使用log4net DebugAppender(或TraceAppender).我已经配置了这样的appender:

<appender name="DebugAppender" type="log4net.Appender.DebugAppender">
    <immediateFlush value="true" />
        <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%level %message%newline" />
    </layout>
</appender>
Run Code Online (Sandbox Code Playgroud)

代码中的记录器以通常的每类方式声明:

private static readonly ILog Log = 
    LogManager.GetLogger(typeof(TradingApiRouteCollectionExtensions));
Run Code Online (Sandbox Code Playgroud)

"输出"窗口中的输出如下所示:

Acme.Common.Configuration.TradingApiRouteCollectionExtensions:DEBUG为服务注册路由前缀'session'Acme.Session.SessionService Acme.Common.Configuration.TradingApiRouteCollectionExtensions:为类型Acme.Session.SessionService找到的DEBUG Web方法:Acme.Common.Configuration.TradingApiRouteCollectionExtensions:调试会议/

注意每行是如何以记录器类型名称开头的.我想压制这个,因为我没有在配置中要求它,我不想要它.我看不出任何明显的方法来做到这一点.可能吗?

.net log4net trace visual-studio-2010 visual-studio

28
推荐指数
3
解决办法
3504
查看次数

在Windows上git:"错误:稀疏结帐在工作目录中没有任何条目"

我有错误:

“error: Sparse checkout leaves no entry on the working directory”
Run Code Online (Sandbox Code Playgroud)

当试图在Windows上的git中设置稀疏结账时.在研究了这个问题并找到了完整的答案后,我已经回答了我自己的问题.

windows git powershell github-for-windows

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

带有TimeSpan选择器的Observable.Generate似乎泄漏内存[使用TimeSpan> 15ms时]

我正在研究使用Observable.Generate来创建一系列结果,这些结果是以msdn网站上的示例为起点间隔采样的.

以下代码没有TimeSpan选择器不会出现内存泄漏:

IObservable<string> obs = Observable.Generate(initialState: 1,
                                              condition: x => x < 1000,
                                              iterate: x => x + 1,
                                              resultSelector: x => x.ToString());
obs.Subscribe(x => Console.WriteLine(x));
Run Code Online (Sandbox Code Playgroud)

但是,以下代码与TimeSpan选择器显示内存泄漏:

TimeSpan timeSpan = TimeSpan.FromSeconds(1);
IObservable<string> obs = Observable.Generate(initialState: 1,
                                              condition: x => x < 1000,
                                              iterate: x => x + 1,
                                              resultSelector: x => x.ToString(),
                                              timeSelector: x => timeSpan);
obs.Subscribe(x => Console.WriteLine(x));
Run Code Online (Sandbox Code Playgroud)

例如,这个玩具应用程序将使用VS 2015社区附带的Memory Profiler快速显示内存泄漏:

using System;
using System.Reactive.Linq;

namespace Sample
{
    public class Program
    {
        static void Main()
        {
            IObservable<string> obs = …
Run Code Online (Sandbox Code Playgroud)

c# system.reactive

24
推荐指数
1
解决办法
409
查看次数

如何查看我的响应式扩展查询的作用?

我正在编写一个包含大量运算符的复杂Reactive Extensions查询.我怎么能看到发生了什么?

我提出并回答这个问题,因为它很有用,而且可能是很好用的.

c# debugging system.reactive

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

在C#中Int64和long有什么区别?

在C#中,Int64和long有什么区别?

例:

long x = 123;
Int64 x = 123;
Run Code Online (Sandbox Code Playgroud)

c# long-integer

15
推荐指数
1
解决办法
8285
查看次数

配置Unity以解析采用装饰依赖项的类型,该依赖项的参数随注入的类型而变化

这是一个相当直接的装饰器模式场景,其复杂性在于,装饰类型具有一个构造函数参数,该参数取决于它被注入的类型.

我有这样的界面:

interface IThing
{
    void Do();
}
Run Code Online (Sandbox Code Playgroud)

这样的实现:

class RealThing : IThing
{
    public RealThing(string configuration)
    {
        ... implementation ...
    }

    public void Do()
    {
        ... implementation ...
    }
}
Run Code Online (Sandbox Code Playgroud)

像这样的装饰者:

class DecoratingThing : IThing
{
    IThing _innerThing;

    public DecoratingThing(IThing thing)
    {
        _innerThing = thing;    
    }

    public void Do()
    {
        _innerThing.Do();
    }
}
Run Code Online (Sandbox Code Playgroud)

最后,我有一些类型的需要IThing,叫Depender1,Depender2等.

class DependerX()
{
    public DependerX(IThing thing)
    {
        ... implementation ...
    }
}
Run Code Online (Sandbox Code Playgroud)

我想配置一个IOC容器来解析DependerX它们被注入RealThing装饰的实例DecoratingThing. …

c# dependency-injection ioc-container inversion-of-control unity-container

12
推荐指数
1
解决办法
3176
查看次数

DelegatingHandler应该如何进行异步调用(ASP.NET MVC Web API)?

我很乐意在调用内部处理程序的SendAsync()之前执行同步工作,并在内部处理程序完成后执行同步工作.例如:

protected override Task<HttpResponseMessage> SendAsync( 
    HttpRequestMessage request, CancellationToken cancellationToken) 
{ 
    // do some sync work before inner handler here 

    var sendTask = base.SendAsync(request, cancellationToken); 
    return sendTask.ContinueWith( 
        task => { // do some sync work afterwards here }); 
} 
Run Code Online (Sandbox Code Playgroud)

但是,我现在需要从委托处理程序中调用IO绑定操作.IO绑定操作已经被包装为a Task<bool>.我需要使用结果来确定是否继续使用内部处理程序.

一个例子是进行网络调用以授权请求.我必须这样做才能与现有系统集成.一般来说,我认为这个问题有一些有效的方案,它应该有一个可行的解决方案.

在这种情况下,实现SendAsync的正确方法是什么,以便我异步执行IO绑定任务,然后继续异步执行内部处理程序?

关键是我想确定请求线程在任何时候都不会被阻塞.

c# asp.net asp.net-web-api

12
推荐指数
1
解决办法
6572
查看次数