我有一个处理私有本地消息队列(MSMQ)的Windows服务.当它启动时,它PeekCompleted在队列上注册一个事件处理程序,然后调用异步BeginPeek()以等待消息到达.
protected override void OnStart(string[] args)
{
if (String.IsNullOrWhiteSpace(args[0]))
return;
queue = new MessageQueue(args[0]);
queue.Formatter = new BinaryMessageFormatter();
queue.PeekCompleted += new PeekCompletedEventHandler(OnPeekCompleted);
queue.BeginPeek();
}
Run Code Online (Sandbox Code Playgroud)
一旦消息到达,我的目标是显然处理该消息.我的代码目前有一个queue.Receive()获取消息的方法,包含在一个事务中,以便在处理过程中出现错误时将消息放回队列.BeginPeek()再次调用以重新启动循环.
private static void OnPeekCompleted(Object source, PeekCompletedEventArgs asyncResult)
{
try
{
MessageQueue q = (MessageQueue)source;
using (MessageQueueTransaction trans = new MessageQueueTransaction())
{
trans.Begin();
Message msg = q.Receive(trans);
ProcessMessage(msg);
trans.Commit();
}
// Restart the asynchronous peek operation.
q.BeginPeek();
}
catch (MessageQueueException qEx)
{
// TODO: Walk it off.
} …Run Code Online (Sandbox Code Playgroud) 在下面的代码中,为什么模式与正则表达式不匹配,但如果我使用正则表达式逐行读取12sep.txt文件,它是否正常工作?
string file = @"C:\Documents and Settings\Sandeep.kumar\Desktop\12sep.txt";
string filedta = File.ReadAllText(file);
string pattern = @"^[^\s]+.[^\s]txt$";
Regex rx = new Regex(pattern, RegexOptions.None);
MatchCollection mc = rx.Matches(filedta);
Run Code Online (Sandbox Code Playgroud) 我想知道我的计算机(或我自己)是否有问题,因为我似乎无法将文件拖放到Visual Studio Code中以在编辑器中将其打开。首先关闭打开的文件夹没有什么不同。VSCode在我尝试过的每个位置(编辑器,打开的选项卡栏,现有的打开的文件等)中始终向我显示“停车标志”。
VSCode为什么会阻止它?
(我在较早版本中也经历过。目前在Windows 7的v1.6上。)
我有以下代码示例:
List<int> list = new List<int>();
list.Add(1);
list.Add(2);
list.Add(3);
list.Add(4);
list.Add(5);
list.Add(6);
list.Add(7);
list.OrderByDescending(n=>n).Reverse();
Run Code Online (Sandbox Code Playgroud)
但是当我使用它时:
list.OrderByDescending(n=>n).Reverse();
Run Code Online (Sandbox Code Playgroud)
我没有得到想要的结果.
如果不是上面的陈述,我使用这个:
list.Reverse();
Run Code Online (Sandbox Code Playgroud)
我得到了想要的结果.
知道为什么我没有得到想要的结果使用第一个声明?
我相信我在理解扩展时遗漏了一些东西.
先感谢您.