小编bar*_*ong的帖子

何时使用Observable.FromEventPattern而不是Observable.FromEvent?

我们有一个客户端呼叫TIBCO EMS队列并正在连接这样的事件:

var msgConsumer = _session.CreateConsumer(responseQueue);
var response = Observable.FromEvent<EMSMessageHandler,EMSMessageEventArgs>
            (h => msgConsumer.MessageHandler += h, h => msgConsumer.MessageHandler -= h)
            .Where(arg => arg.Message.CorrelationID == message.MessageID);
Run Code Online (Sandbox Code Playgroud)

当我调用时,response.Subscribe(...)我得到System.ArgumentException"绑定到目标方法的错误."

我可以使它工作,Observable.FromEventPattern<EMSMessageEventArgs>(msgConsumer, "MessageHandler")但然后它将事件作为一个字符串,而不是干净.

我也IObservable<EventPattern<EMSMessageEventArgs>>不愿意IObservable<EMSMessageEventArgs>

我想了解的是:当我应该使用FromEventFromEventPattern?这似乎有点反复试验.

c# system.reactive

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

使用Ninject IOC替换工厂

我在解析器中有一个工厂方法.基本上当我加载一个令牌时,我会查找该令牌的处理程序,或者直接进入默认处理程序.我已将其实现为a switch和as,Dictionary<string,Type>但两种方法都要求我将映射存储在除处理程序类之外的其他位置.

我们正在使用Ninject for IOC,因此我意识到我也可以使用它

kernel.Get<ITokenHandler>(tokenName); 
Run Code Online (Sandbox Code Playgroud)

但这并没有节省我存储处理程序在2个位置可以处理的令牌的信息.有没有办法可以装饰处理程序,以便自动映射?

c# ninject inversion-of-control factory-pattern

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

从Stream生成IObservable <String>的首选方法

作为我们的应用程序的一部分(现在生产大约4个月),我们有一个来自外部设备的数据流,我们将其转换为IObservable

到目前为止,我们一直在使用以下方法来生成它,并且它一直运行良好.

IObservable<string> ObserveStringStream(Stream inputStream)
{
    var streamReader = new StreamReader(inputStream);
    return Observable
            .Create<string>(observer => Scheduler.ThreadPool
            .Schedule(() => ReadLoop(streamReader, observer)));
}

private void ReadLoop(StreamReader reader, IObserver<string> observer)
{
    while (true)
    {
        try
        {
            var line = reader.ReadLine();
            if (line != null)
            {
                observer.OnNext(line);
            }
            else
            {
                observer.OnCompleted();
                break;
            }
        }
        catch (Exception ex)
        {
            observer.OnError(ex);
            break;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

昨晚我想知道是否有办法使用yield return语法来实现相同的结果并想出了这个:

IObservable<string> ObserveStringStream(Stream inputStream)
{
    var streamReader = new StreamReader(inputStream);
    return ReadLoop(streamReader)
            .ToObservable(Scheduler.ThreadPool);
}

private IEnumerable<string> ReadLoop(StreamReader reader) …
Run Code Online (Sandbox Code Playgroud)

c# reactive-programming system.reactive

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

位桶上的拉取请求不会触发竹子上的构建

我一直在尝试进行设置以触发拉取请求的构建。

我们的设置如下:

  • Bamboo 6.5.0 本地服务器
  • Bitbucket 4.11.2 使用 git、本地服务器
  • 计划存储库与主分支链接
  • 我定义了一个“Bitbucket 服务器存储库触发”触发器,查看链接的存储库
  • 我的构建计划基于链接的存储库,并有一个用于开发的手动分支设置
  • 在构建计划的“分支”选项卡上,我得到“创建拉取请求时创建计划”并触发“与父计划相同”

2 个服务器已链接。我可以在 bitbucket 上看到 master 和开发的构建结果,并且可以看到构建结果中列出的提交。此外,“branchStatus”页面上还列出了拉取请求分支。

我尝试过从以“feature/*”和“feature-*”命名的功能分支中拉取请求,并向开发掌握拉取请求

不管怎样,我从来没有发生过拉取请求构建。

git bitbucket bamboo bitbucket-server

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

自定义 LINQPad 图表中时间序列数据的 x 轴刻度和标签

我有一个简单的 CSV 日志文件,将其读入列表并在 LINQPad 中绘制图表非常容易,但我想更新格式和 x 轴上的刻度。

这是我的代码:

File.ReadAllLines(@"\\...\ModelTimes.csv")
    .Skip(1)
    .Select(line => line.Split(','))
    .Select(data => new
        {
            CurrentTime = DateTime.Parse(data[0]),
            ModelTime = DateTime.Parse(data[1]),
            ModelAgeHours = Decimal.Parse(data[2]),
            CutOff = 2
        })
    .Where(data => data.CurrentTime.Date == new DateTime(2021, 9, 24))
    .Chart(data => data.CurrentTime)
    .AddYSeries(data => data.ModelAgeHours, LINQPad.Util.SeriesType.Line, "Model Age")
    .AddYSeries(data => data.CutOff, LINQPad.Util.SeriesType.Line, "2 Hours")
Run Code Online (Sandbox Code Playgroud)

随着输出: 单日输出样本 正如你所看到的,我得到的只是日期,而不是 x 轴上的时间。有什么方法可以配置标签和刻度频率,例如: 2021-09-24 10:00每 2 小时 1 次刻度。

.net linqpad

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