小编Urb*_*Esc的帖子

MSMQ一个(队列)到多个(侦听器)场景

我有这种情况:一个客户端将消息发送到msmq队列实例,并且有3个进程侦听此队列.我希望能够让这些实例中的每一个都选择不同的消息并进行处理.

我知道这是队列的常见使用场景,我已经使用MSMQ,.NET和C#为此工作了代码.

但是我想知道msmq是否是我最好的选择 - 文档明确指出MSMQ是用于"一对一"通信,这意味着不应该有多个监听器.

这让我感到疑惑,我正在为我的用例做正确的解决方案吗?或者反过来说,我是否必须为每个侦听器创建一个队列并在工作流的前一部分中分发消息?

将非常感谢在此类场景中演示MSMQ用法的工作示例的链接.

谢谢

.net c# msmq

13
推荐指数
2
解决办法
9517
查看次数

一个任务可以有多个等待者吗?

我正在为Windows 8项目提供异步服务,并且有一些此服务的异步调用,一次只能调用一次.

 public async Task CallThisOnlyOnce()
 {
      PropagateSomeEvents();

      await SomeOtherMethod();

      PropagateDifferentEvents();
 }
Run Code Online (Sandbox Code Playgroud)

既然你不能在锁语句中封装异步调用,我想到使用AsyncLock模式,但我认为我可能会尝试这样的事情:

 private Task _callThisOnlyOnce;
 public Task CallThisOnlyOnce()
 {
      if(_callThisOnlyOnce != null && _callThisOnlyOnce.IsCompleted)
         _callThisOnlyOnce = null;

      if(_callThisOnlyOnce == null)
         _callThisOnlyOnce = CallThisOnlyOnceAsync();

      return _callThisOnlyOnce;
 }

 private async Task CallThisOnlyOnceAsync()
 {
      PropagateSomeEvents();

      await SomeOtherMethod();

      PropagateDifferentEvents();
 }
Run Code Online (Sandbox Code Playgroud)

因此,你最终CallThisOnlyOnceAsync只能同时执行一次调用,并且多个等待者都挂在同一个任务上.

这是一种"有效"的方式,或者这种方法有一些缺点吗?

c# .net-4.0 task-parallel-library windows-runtime .net-4.5

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

对protobuf-net WCF的使用感到困惑

我一直在关注本教程以添加protobuf-net到我的WCF项目中.我有一个共享的DTO库.服务器和客户端都使用这些DTO类.我已将所有Service方法[OperationContract]归因于属性,但我没有[DataContract]在DTO类上分配任何属性.

我添加了protobuf-netNuget包并将配置添加到了web.config.

我正在使用IIS Express测试我的服务,并认为我应该对目前为止所做的事情感到满意.但是,在测试几个调用之后,我注意到我忘了添加protobuf-net到我的客户端,但一切都按预期工作(即没有序列化或反序列化的错误).

我怀疑protobuf根本没用在我的程序中,而且我错过了一些东西.我想避免使用[DataContract]属性,但我可以忍受添加它们,如果这是需要protobuf-net工作.

我还缺少什么?

c# wcf protobuf-net

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

WPF中的类监听器和实例监听器之间有什么区别?

我试图围绕一些WPF特定的东西,并且尚未找到UIElement.AddHandler方法和EventManager.RegisterClassHandler方法之间的具体关系.

我已经google了一下,发现了这篇有趣的MSDN文章:

http://msdn.microsoft.com/en-us/library/ms747183.aspx

这里说明:

"路由事件考虑事件的两种不同类型的侦听器:类侦听器和实例侦听器.类侦听器存在,因为类型在其静态构造函数中调用了特定的EventManager API,RegisterClassHandler,或者从元素库中重写了类处理程序虚方法实例监听器是特定的类实例/元素,其中通过调用AddHandler为该路由事件附加了一个或多个处理程序.

好了,所以我知道一个类和它的实例之间的区别,但不知何故,我无法理解文档的这个特定部分.

任何人都可以为我清楚吗?

.net c# wpf routed-events

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

Windows应用商店WebView替代方案

我在一个项目中广泛使用WebView,但发现它的缺点是成为项目的showstopper.有没有可以在Windows应用商店中呈现HTML的替代方案?

编辑:根据要求,我们对此控件有一些问题:

  • 它没有依赖属性支持,您需要调用方法(需要的解决方法:将其包装在自定义控件中,或附加属性...)
  • 它无法呈现本地html文件(使用navigatetostring解决方法)
  • 如果本地html文件包含额外的文件,如css或js,则需要更多的解决方法才能使其工作
  • 它是在您的应用程序之上呈现的IE10,因此它涵盖了其他控件(再次,您需要那么糟糕 - 对不起 - webbrush解决方法)
  • 放入Listview时动画效果不佳(滚动速度比其他控件快,也很奇怪),没有解决方法
  • 放入动画弹出窗口时,动画根本不起作用,没有解决方法
  • 它会在纵向模式中打破语义缩放(除了需要使用webbrush工作方式才能工作),如果放大则会出现未知原因.只要您不导航任何内容,它就可以在横向和纵向中工作,但不要随时导航网站它打破了缩放.

我们可能会遇到更多问题,这些问题使我们认为它是一个显而易见的问题

c# webview windows-8 windows-runtime windows-store-apps

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

如何以及是否构建复合视图?

我的申请并不复杂.它从Web服务中检索单个实体,对其进行编辑并将其发回.实体本身相当大,有一些协会和几十个属性.把它想象成一个大文件(它实际上一个文件).

我想过使用多个嵌套视图构建我的应用程序.所以我有一个完整实体的视图和视图模型,但它包含多个视图和各种属性的视图模型.这是一个好方法吗?或者我将来会遇到很多问题?

另外:我如何连接它们?我是否绑定嵌套视图的DataContext的以"实体"("真正的"从域对象)或通过这样来讲话"父"视图模型创建的ViewModels?

我应该使用MVVM Light,Prism还是Caliburn.Micro等MVVM框架?

c# wpf mvvm

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

如何强制IntelliJ使用不同的主文件夹

我有一台带两个硬盘的电脑.在第一个,SSD磁盘,我有Windows分区(C)和第二个(D),raid卷,我安装所有的程序.我还将我的用户文件夹(桌面,文档,下载,图片和视频)移动到D:/Users/David.

D:/Program Filles(x86).IntelliJIdea13目录上安装IntelliJ Idea后出现D:/Users/David.没问题,因为一切都很好.然后我安装了Scala插件,创建了一个新的SBT项目并构建它.在此之后,SBT使用的.sbt目录已经存在,C:/Users/David/.sbt但是我的项目中的库的引用指向了D:/Users/David/.sbt.问题是,如何强制IntelliJ Idea或Scala插件下载库D:/Users/David.sbt

intellij-idea

6
推荐指数
2
解决办法
8683
查看次数

按值获取字节顺序

我现在有一个有趣的思考问题,所以也许你们中的某个人可以提供帮助.

基本上我所拥有的是一个字节数组,需要知道该数组中每个项目的顺序 - 按值.哦,伙计,我只会告诉你一个小例子,我认为这会有所帮助:

byte[] array = new byte[4] { 42, 5, 17, 39 }
Run Code Online (Sandbox Code Playgroud)

我希望得到这个结果

4 1 2 3
Run Code Online (Sandbox Code Playgroud)

什么是聪明的方法来做到这一点?

此外,如果条目的值相等,我希望算法保留顺序.所以

new byte[4] { 22, 33, 33, 11 }
Run Code Online (Sandbox Code Playgroud)

应该导致

2 3 4 1
Run Code Online (Sandbox Code Playgroud)

c# algorithm

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

放大Windows应用商店应用中的图像

我有一个带有图像控件的ScrollViewer.它显示一个相当大的图像.我希望我的用户能够使用手势放大图像.因此,我在Scrollviewer上启用了ZoomMode.然而,只要用户松开手指,Scrollviewer就会自动滚动回图像的左侧"边缘",从而无法有效地放大和缩小图像.

这是我正在使用的模板:

<DataTemplate x:Key="SingleItemTemplate">
    <ScrollViewer ZoomMode="Enabled">
        <Grid Margin="5,0,5,0">
            <Image Source="{Binding ImageUrlHighRes}">
            </Image>
        </Grid>
    </ScrollViewer>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)

我怎么解决这个问题?

c# scrollviewer windows-8 windows-store-apps

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

同步控制台应用程序中不同线程的事件

我感觉自己像一个总的菜鸟问这个,但无论如何,它在这里:

我想知道从不同线程同步事件的最简单方法是什么.

一些示例代码:

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("# started on:" + Thread.CurrentThread.ManagedThreadId);
        tt t = new tt();

        t.First += new EventHandler(t_First);
        t.Second += new EventHandler(t_Second);

        Task task = new Task(new Action(t.Test));
        task.Start();

        while (true)
        {
            Console.ReadKey();
            Console.WriteLine("# waiting on:" + Thread.CurrentThread.ManagedThreadId);
        }
    }

    static void t_Second(object sender, EventArgs e)
    {
        Console.WriteLine("- second callback on:" + Thread.CurrentThread.ManagedThreadId);
    }

    static void t_First(object sender, EventArgs e)
    {
        Console.WriteLine("- first callback on:" + Thread.CurrentThread.ManagedThreadId);
    }

    class tt
    {
        public tt() …
Run Code Online (Sandbox Code Playgroud)

c# multithreading task console-application

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