小编Tim*_*ong的帖子

学习Rx:如何将可观察的字符序列解析为可观察的字符串序列?

这可能非常简单,但我在Rx的学习曲线底部.我花了几个小时阅读文章,观看视频和编写代码,但我似乎对一些似乎应该非常简单的事情有一些心理障碍.

我正在从串口收集数据.我曾经习惯Observable.FromEventPattern捕获SerialDataReceived事件并将其转换为可观察的字符序列.到现在为止还挺好.

现在,我想基于分隔符来解析该字符序列.没有涉及新行,但每个"数据包"数据都由前导码和终结符包围,两个单个字符.为了争论,我们可以说它们是括号{}.

所以如果我j u n k { H e l l o } j u n k在我的字符序列上得到 字符序列,那么我想要发出Hello或者{Hello}在我的字符串序列上.

我可能错过了一些简单的东西,但我甚至无法弄清楚如何处理这个问题.有什么建议吗?

c# system.reactive

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

如何从队列中创建 IObservable,以便在队列为空时序列不会结束?

我正在研究使用 Reactive Extensions for .NET (Rx) 的东西,我想要一个从队列(或类似的)中获取输入的序列。

我试过这样做:

    static readonly Queue<DeviceTransaction> TransactionQueue = new Queue<DeviceTransaction>();
    //...
    var observableTransactionSource = TransactionQueue.ToObservable();
    //...
    observableTransactionSource.Subscribe(transactionObserver);
Run Code Online (Sandbox Code Playgroud)

它在一定程度上起作用,但是当队列为空时序列完成。我不想要一个空队列来结束序列。空并不意味着结束,它只是意味着“此刻不再”。

有没有办法在队列为空时停止序列完成,或者我应该以不同的方式思考整个问题?

c# reactive-programming system.reactive

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

是否可以恢复整个SVN存储库?

我只是对我的SVN存储库做了一些愚蠢的事情,我不小心将一大堆东西导入到根目录而不是子文件夹中.我需要很长时间才能清理....除非有一个简单的方法对回购进行全局还原?帮助文件讨论了还原工作副本,但新导入的项目没有工作副本.有没有办法撤消导入?

重复:回滚或将整个svn存储库还原为旧版本

svn undo

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

多个 ProgID 可以指向同一个 ClsID 吗?

我正在研究一组本质上是插件的东西,它们是 COM 服务器。每个插件都有一组由另一个组件管理的配置数据,配置数据的主键是插件的 ProgID。当插件需要访问配置项时,它会进行调用并传入其 ProgID 和所需属性的名称。这是一个遗留设计,我必须保持向后兼容性。

我现在需要加载每个插件的多个实例,每个实例都有一组不同的配置数据。我正在考虑的解决方案是为每个插件创建多个唯一的 ProgID,每个 ProgID 将指向插件的单个 ClsId。因此,插件的每个实例都将通过其 ProgID 进行标识,ProgID 仍用作配置数据的主键,并且所有内容都 100% 向后兼容。

所以,问题:

  1. 这是一种可以接受的技术吗?(多个 ProgID 都指向单个 ClsID)。
  2. 当我的插件加载时,它是否能够分辨出使用哪个 ProgID 来创建它?

windows com ole com-interop progid

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

什么是.NET等效的COM LocalServer?

在VB6中,编写提供COM类的应用程序是一件简单的事情,应用程序将作为系统范围的单例运行,并且能够将COM类提供给多个进程.我相信这称为COM LocalServer.

什么是.NET中的等价物?如何制作处理来自多个应用程序或进程的请求的单个可执行文件?

.net com equivalent localserver

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

单元测试与文件系统交互的好方法是什么?

我正在开发一个简单的项目,作为TDD中的练习而不是其他任何东西.该程序从Web服务器获取一些图像并将其保存为文件.为了记录,我正在做的(我期望的最终结果)与这个perl脚本非常相似,但在C#中.

我已经到了需要将文件保存到磁盘的地步.我需要进行单元测试来强制执行代码.我不知道如何处理这个问题.我希望能够验证代码是否创建了具有预期文件名的预期文件,当然我根本不想触摸文件系统.我并不是单元测试和TDD的新手,但出于某种原因,我真的不清楚在这种情况下该怎么做.我确信,一旦我看到它,答案就会很明显,但......我脑中一个代码来自的神秘地方就是不合作.

我选择的工具是MSpec和FakeItEasy,但感谢任何框架中的建议.什么是单元测试文件系统交互的明智方法?

c# tdd unit-testing

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

在 WiX 捆绑包中,如果找不到注册表项,如何阻止捆绑包启动?

我需要编写一个 WiX 捆绑包,除非系统上存在某个注册表项,否则该捆绑包不会运行。

\n\n

在正常的安装项目中,我会使用启动条件,但我不创作安装项目,而只是创作顶级包。该<Bundle>元素有一个Condition属性,但在 Burn 手册中它说:

\n\n
\n

捆绑的状况。如果不满足条件,捆绑包将拒绝运行。在加载引导程序应用程序之前(检测之前)检查条件,因此只能引用内置变量,例如指示操作系统版本的变量。

\n
\n\n

因此,看来除了最基本的高级检查之外,我不能使用元素Condition的 \xc2\xa0 属性进行任何操作,当然也不能用于我需要的功能。Bundle

\n\n

那么,如何在捆绑包级别检查注册表项,并在该项不存在时拒绝继续?

\n

installation wix burn

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

SerialPort编码 - 如何获得8位ASCII?

我遇到了通过串口通信的程序的问题.它必须发送和接收的一个字符是度符号,ASCII 0xBF.它已经工作好多年了,现在突然串口对象开始丢失第7位,所以我得到0x3F而不是0xBF.

我确信这是我做过的傻事,因为我在那个区域修改了我的代码 - 但是我看不出我做了什么导致了第8位的丢失.

我的端口初始化如下:

    BaudRate              9600  int  
    DataBits              8 int  
    DiscardNull true    bool
    DtrEnable             true  bool
    Encoding    {System.Text.ASCIIEncoding} System.Text.Encoding                  Handshake           None  System.IO.Ports.Handshake
    NewLine           "\n"  string
    Parity            None  System.IO.Ports.Parity
    ParityReplace   63  byte
    PortName              "COM4"    string
    ReadBufferSize  128 int
    ReadTimeout 250 int
    ReceivedBytesThreshold  1   int
    RtsEnable             true  bool
    StopBits              One   System.IO.Ports.StopBits
    WriteBufferSize 64  int
    WriteTimeout    1500    int
Run Code Online (Sandbox Code Playgroud)

有什么想法我如何将端口恢复到8位操作?

.net c# serial-port

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

只有在TeamCity构建时,才能构建神秘失败的沙堡

我有一个相当大的解决方案,其中包含两个基于Sandcastle + Sandcastle帮助文件生成器(SHFB)的文档项目.这些项目都可以从命令行(msbuild project.shfb)正确构建,也可以使用SHFB Visual Studio 2010集成的beta版本.

当我在TeamCity中运行构建时,我在文档构建中遇到了一个神秘的构建失败.SHFB日志说明了这一点:

      [Sandcastle Help File Builder, version 1.9.3.0]
      Cached Resolve Reference  Links 2 Component.  Copyright © 2006-2011, Eric Woodruff, All Rights Reserved
      http://SHFB.CodePlex.com
  Info: CachedResolveReferenceLinksComponent: Loaded 61 cached MSDN URL entries
  Info: SaveComponent: Instantiating component.
  Info: BuildAssembler: Building topic N:MyProject
  Info: BuildAssembler: Building topic T:MyProject.ActionNotImplementedException
  Info: BuildAssembler: Building topic AllMembers.T:MyProject.ActionNotImplementedException
  Info: BuildAssembler: Building topic Methods.T:MyProject.ActionNotImplementedException
  Info: BuildAssembler: Building topic Properties.T:MyProject.ActionNotImplementedException
  Info: BuildAssembler: Building topic Overload:MyProject.ActionNotImplementedException.#ctor
  Info: BuildAssembler: Building topic M:MyProject.ActionNotImplementedException.#ctor
  Info: BuildAssembler: …

msbuild sandcastle teamcity shfb

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

为什么从计时器引发PropertyChanged事件会导致COMException?

我正在使用在Raspberry Pi下运行的XAML开发通用Windows平台应用程序Windows 10 IoT Core.该应用程序驱动I2C总线上的温度传感器.传感器类是MLX90614Thermometer.传感器使用a DispatcherTimer每100毫秒(大约)获取读数并更新移动平均值.当移动平均值变化超过指定阈值时,传感器会引发ValueChanged事件并在事件args中提供新值.

在我的ViewModel类中TemperatureSensorViewModel,我订阅了传感器的ValueChanged事件并使用它来更新命名的绑定属性Ambient,Channel1Channel2.这些属性绑定到XAML UI中的文本块.这是事件处理程序:

    void HandleSensorValueChanged(object sender, SensorValueChangedEventArgs e)
    {
        switch (e.Channel)
        {
            case 0:
                Ambient = e.Value;
                break;
            case 1:
                Channel1 = e.Value;
                break;
            case 2:
                Channel2 = e.Value;
                break;
        }
    }
Run Code Online (Sandbox Code Playgroud)

...这里是一个示例数据绑定Ambient...

    <TextBlock x:Name="Ambient"  Grid.Row="1" Text="{Binding Path=Ambient}" Style="{StaticResource FieldValueStyle}" />
Run Code Online (Sandbox Code Playgroud)

我正在使用MVVM Light Toolkit,因此我的属性就像这样实现(仅Ambient显示,但除了名称之外其他都是相同的):

    public double Ambient
    {
        get { return ambientTemperature; …
Run Code Online (Sandbox Code Playgroud)

xaml inotifypropertychanged mvvm-toolkit windows-10-iot-core uwp

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