Я начинаю с System.Reactive и мне нравится его простота, но я столкнулся с чем-то, что, кажется, должно иметь элегантное решение, но я не создаю ничего похожего на элегантное решение !!
Сценарий состоит в том, что я хочу перейти на сторонний веб-сервис, чтобы получить некоторую информацию (в отдельном потоке) и в то же время искать локально.Затем объедините результаты, ЕСЛИ не истечет время ожидания веб-службы, и я возьму только информацию из локальных результатов.
Поэтому я хочу ввести здесь тайм-аут для наблюдаемого раздела:
using System;
using System.Linq;
using System.Threading;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Starting");
var o = Observable.Start(DoSeparateThreadCall);
DoCallInThisThread();
o.First();
Console.WriteLine("the End");
Console.ReadLine();
}
private static void DoSeparateThreadCall()
{
Console.WriteLine("Started in separate thread call");
Thread.Sleep(3000);
Console.WriteLine("Ended in separate thread call");
}
static void DoCallInThisThread()
{
Console.WriteLine("Started in this thread call");
Thread.Sleep(2000);
Console.WriteLine("Ended in this thread call");
}
}
}
Кто-нибудь делал что-нибудь подобное?Похоже, что это должно быть довольно распространенным делом, например, если время ожидания вызова третьей стороны делает X?