小编ple*_*ijf的帖子

使用BeginPeek后,我是否有义务致电EndPeek?

我有一个处理私有本地消息队列(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)

c# msmq peek msmq-transaction

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

如何在C#中使用正则表达式读取文本文件?

在下面的代码中,为什么模式与正则表达式不匹配,但如果我使用正则表达式逐行读取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)

c# regex

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

可以在VSCode中拖放打开文件吗?

我想知道我的计算机(或我自己)是否有问题,因为我似乎无法将文件拖放到Visual Studio Code中以在编辑器中将其打开。首先关闭打开的文件夹没有什么不同。VSCode在我尝试过的每个位置(编辑器,打开的选项卡栏,现有的打开的文件等)中始终向我显示“停车标志”。

VSCode为什么会阻止它?

(我在较早版本中也经历过。目前在Windows 7的v1.6上。)

drag-and-drop visual-studio-code

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

关于排序扩展的一些误解

我有以下代码示例:

    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)

我得到了想要的结果.

知道为什么我没有得到想要的结果使用第一个声明?

我相信我在理解扩展时遗漏了一些东西.

先感谢您.

.net c# ienumerable

0
推荐指数
1
解决办法
63
查看次数