本文整理汇总了C#中ActionBlock.AsObserver方法的典型用法代码示例。如果您正苦于以下问题:C# ActionBlock.AsObserver方法的具体用法?C# ActionBlock.AsObserver怎么用?C# ActionBlock.AsObserver使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ActionBlock
的用法示例。
在下文中一共展示了ActionBlock.AsObserver方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ElasticSearchOutput
public ElasticSearchOutput(ElasticSearchOutputConfig config, PutIndexTemplateDescriptor indexTemplate = null)
{
_logger = LogProvider.For<ElasticSearchOutput>();
_logger.Info("Creating");
var connectionSettings = new ConnectionSettings(new Uri(config.ElasticSearchUri))
.RequestTimeout(config.RetryInterval)
.MaximumRetries(config.RetryCount);
_elasticClient = new ElasticClient(connectionSettings);
var batchCount = config.MaxBatchCount > 0 ? config.MaxBatchCount : 1;
_uploadBlock = new ActionBlock<IList<TelemetryEvent>>(list => Send(list, throwExceptions: false), new ExecutionDataflowBlockOptions
{
BoundedCapacity = config.BoundedCapacity,
MaxDegreeOfParallelism = config.MaxDegreeOfParallelism,
});
_internalStreamBufferSubscription = _internalStream
.Buffer(TimeSpan.FromSeconds(config.BufferTimeSec), batchCount)
.Subscribe(_uploadBlock.AsObserver());
_jsonSerializerSettings = new JsonSerializerSettings() { ContractResolver = new CamelCasePropertyNamesContractResolver() };
_elasticClient.PutIndexTemplate(indexTemplate ?? new PutIndexTemplateDescriptor(config.ElasticSearchIndexName+"-template")
.Template(config.ElasticSearchIndexName+"*")
.Settings(x => x
.NumberOfReplicas(0)
.NumberOfShards(1))
.Mappings(m => m
.Map("_default_", tm => tm
.AllField(af => af.Enabled(false))
.DynamicTemplates(d => d
.DynamicTemplate("all_strings_not_analyzed", dd => dd
.MatchMappingType("string")
.Match("*")
.Mapping(dm => dm
.String(sm => sm
.NotAnalyzed()))))
.Properties(p => p
.String(sp => sp
.Name("message")
.Index(FieldIndexOption.Analyzed))))));
_config = config;
}
示例2: TestAsObservableAndAsObserver_DataPropagation
public async Task TestAsObservableAndAsObserver_DataPropagation()
{
// Test that preset data flows correctly
{
var bb = new BufferBlock<int>();
bb.PostRange(0, 2);
bb.Complete();
int nextValueExpected = 0;
var ab = new ActionBlock<int>(i => {
Assert.True(i == nextValueExpected, string.Format("Expected next value to be {0} but got {1}", nextValueExpected, i));
nextValueExpected++;
});
bb.AsObservable().Subscribe(ab.AsObserver());
await ab.Completion;
}
// Test that new data flows correctly
{
int nextValueExpected = -2;
var ab = new ActionBlock<int>(i => {
Assert.True(i == nextValueExpected, string.Format("Expected next value to be {0} but got {1}", nextValueExpected, i));
nextValueExpected++;
});
var bb = new BufferBlock<int>();
bb.AsObservable().Subscribe(ab.AsObserver());
bb.PostRange(-2, 0);
bb.Complete();
await ab.Completion;
}
// Test that unsubscribing stops flow of data and stops completion
{
var target = new BufferBlock<int>();
var source = new BufferBlock<int>();
using (source.AsObservable().Subscribe(target.AsObserver()))
{
source.PostItems(1, 2);
Assert.Equal(expected: 1, actual: await target.ReceiveAsync());
Assert.Equal(expected: 2, actual: await target.ReceiveAsync());
}
source.Post(3);
var wb = new WriteOnceBlock<int>(i => i);
source.LinkTo(wb);
await wb.Completion;
source.Complete();
await source.Completion;
Assert.False(target.Completion.IsCompleted);
}
}
示例3: Main
public static void Main(string[] args)
{
var testObs = new TransformBlock<int, int>(item => item * item);
var o = testObs.AsObservable ();
o.Subscribe(i=> Console.WriteLine("Test Obs received {0}", i.ToString()));
for (int i = 0; i < 5; i++) {
testObs.Post (i);
}
testObs.Completion.Wait ();
Console.ReadKey ();
var buffer = new BufferBlock<int>();
IObservable<int> integers = buffer.AsObservable();
integers.Subscribe(data =>
Console.WriteLine(data),
ex => Console.WriteLine(ex),
() => Console.WriteLine("Done"));
buffer.Post(13);
buffer.Post(14);
buffer.Post(15);
buffer.Post(16);
Console.ReadKey ();
IObservable<DateTimeOffset> ticks =
Observable.Interval(TimeSpan.FromSeconds(1))
.Timestamp()
.Select(x => x.Timestamp)
.Take(5);
var display = new ActionBlock<DateTimeOffset>(x => Console.WriteLine(x));
ticks.Subscribe(display.AsObserver());
Console.ReadKey ();
try
{
display.Completion.Wait();
Trace.WriteLine("Done.");
}
catch (Exception ex)
{
Trace.WriteLine(ex);
}
try
{
var multiplyBlock = new TransformBlock<int, int>(item =>
{
// if (item == 1)
// throw new InvalidOperationException("Blech.");
return item * 2;
});
var subtractBlock = new TransformBlock<int, int>(item => item - 2);
multiplyBlock.LinkTo(subtractBlock);
var printing = new ActionBlock<int>(i => Console.WriteLine("Received {0}", i.ToString()));
subtractBlock.LinkTo(printing, new DataflowLinkOptions { PropagateCompletion = true });
IObservable<int> obs = subtractBlock.AsObservable();
obs.Subscribe(i => Console.WriteLine("Received Observable {0}", i.ToString()));
for(int i = 0; i < 10;i++){
multiplyBlock.Post(i);
subtractBlock.Post(i);
}
Console.ReadLine ();
//printing.Completion.Wait();
}
catch (AggregateException exception)
{
AggregateException ex = exception.Flatten();
System.Diagnostics.Trace.WriteLine(ex.InnerException);
}
Console.WriteLine ("Hello World!");
Console.ReadLine ();
}