我们有一个客户端呼叫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>
我想了解的是:当我应该使用FromEvent过FromEventPattern?这似乎有点反复试验.
我在解析器中有一个工厂方法.基本上当我加载一个令牌时,我会查找该令牌的处理程序,或者直接进入默认处理程序.我已将其实现为a switch和as,Dictionary<string,Type>但两种方法都要求我将映射存储在除处理程序类之外的其他位置.
我们正在使用Ninject for IOC,因此我意识到我也可以使用它
kernel.Get<ITokenHandler>(tokenName);
Run Code Online (Sandbox Code Playgroud)
但这并没有节省我存储处理程序在2个位置可以处理的令牌的信息.有没有办法可以装饰处理程序,以便自动映射?
作为我们的应用程序的一部分(现在生产大约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) 我一直在尝试进行设置以触发拉取请求的构建。
我们的设置如下:
2 个服务器已链接。我可以在 bitbucket 上看到 master 和开发的构建结果,并且可以看到构建结果中列出的提交。此外,“branchStatus”页面上还列出了拉取请求分支。
我尝试过从以“feature/*”和“feature-*”命名的功能分支中拉取请求,并向开发和掌握拉取请求
不管怎样,我从来没有发生过拉取请求构建。
我有一个简单的 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 次刻度。