我是键盘快捷键的忠实粉丝.如果某些功能或操作没有快捷方式,我倾向于编写一个小程序并附加Ctrl+ Alt+ [键]快捷方式.
昨天在使用Visual Studio进行编码时,我开始考虑他们如何分配快捷方式.有大量的命令,但大多数命令都很直观,而且没有一个命令与其他系统范围的组合重叠.唯一的例外是Ctrl+ W并且它激怒了我的地狱,它默认不会关闭活动标签.
在为自己的程序分配键盘快捷键时应该记住哪些最佳实践?
除特定功能外,不应使用的常见和"保留"组合是什么(eq Ctrl+ S,Ctrl+ W....)
在小型应用程序中,我认为最好将其Ctrl用作修饰键,但在较大的应用程序中呢?是否应该有两个修饰键(Shift/ Alt?)或在Visual Studio中使用?应该Shift只用于反转功能(Ctrl+ Shift+ Tab,向后滚动标签)?
或者如何在托盘中最小化程序运行,或者根本没有GUI.Windows-key应该用在那个组合中吗?
我遇到了麻烦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中没有问题.
我正在将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;这是一个问题,因为有时消息会在此之前到达.