小编Juh*_*uha的帖子

设计键盘快捷键的最佳做法

我是键盘快捷键的忠实粉丝.如果某些功能或操作没有快捷方式,我倾向于编写一个小程序并附加Ctrl+ Alt+ [键]快捷方式.

昨天在使用Visual Studio进行编码时,我开始考虑他们如何分配快捷方式.有大量的命令,但大多数命令都很直观,而且没有一个命令与其他系统范围的组合重叠.唯一的例外是Ctrl+ W并且它激怒了我的地狱,它默认不会关闭活动标签.

在为自己的程序分配键盘快捷键时应该记住哪些最佳实践?

除特定功能外,不应使用的常见和"保留"组合是什么(eq Ctrl+ S,Ctrl+ W....)

在小型应用程序中,我认为最好将其Ctrl用作修饰键,但在较大的应用程序中呢?是否应该有两个修饰键(Shift/ Alt?)或在Visual Studio中使用?应该Shift只用于反转功能(Ctrl+ Shift+ Tab,向后滚动标签)?

或者如何在托盘中最小化程序运行,或者根本没有GUI.Windows-key应该用在那个组合中吗?

windows keyboard-shortcuts

17
推荐指数
1
解决办法
3255
查看次数

与.Net 3.5和4.0程序集(NATUPnPLib)的奇怪兼容性问题

我遇到了麻烦NATUPnP 1.0类型库在Visual Studio 2010与框架3.5工作如果我使用.NET 4.0,它工作得很好,但与.net 3.5,NATUPNPLib的命名空间看起来excactly像NETCONLib的.

例如,此站点的此端口转发管理应用程序示例:http://pietschsoft.com/post/2009/02/05/NET-Framework-Communicate-through-NAT-Router-via-UPnP.aspx

..使用.Net 3.5,但我无法在Visual Studio 2010中编译它,除非我将其更改为.Net 4.0.
我没试过,但我打赌在Visual Studio 2008中没有问题.

.net compatibility assemblies namespaces

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

使用async/await,RX和LINQ进行异步消息处理

我正在将Reactive Extensions与async/await结合使用,以简化我的套接字协议实现.当特定消息到达时必须执行一些操作(例如,将'pong'发送到每个'ping'消息),并且还有一些方法需要异步等待某些特定响应.以下示例说明了这一点:

private Subject<string> MessageReceived = new Subject<string>();

//this method gets called every time a message is received from socket
internal void OnReceiveMessage(string message)
{
    MessageReceived.OnNext(message);
    ProcessMessage(message);
}

public async Task<string> TestMethod()
{
    var expectedMessage = MessageReceived.Where(x => x.EndsWith("D") && x.EndsWith("F")).FirstOrDefaultAsync();
    await SendMessage("ABC");

    //some code...

    //if response we are waiting for comes before next row, we miss it
    return await expectedMessage;
}
Run Code Online (Sandbox Code Playgroud)

TestMethod()将"ABC"发送到套接字并在接收到例如"DEF"时继续(在此之前可能还有一些其他消息).

这几乎可以,但有一个竞争条件.似乎这段代码不会监听消息,直到return await expectedMessage;这是一个问题,因为有时消息会在此之前到达.

.net c# linq system.reactive async-await

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