public void ExceptionsOnAsyncMethodsNeedToBeManagedCarefully() { const int maxHeadlines = 500; var gate = new ManualResetEvent(false); ListNewsHeadlinesResponseDTO listNewsHeadlinesResponseDto = null; _rpcClient.News.BeginListNewsHeadlinesWithSource( source: "dj", category: "UK", maxResults: maxHeadlines + 1, callback: (response) => { try { listNewsHeadlinesResponseDto = _rpcClient.News.EndListNewsHeadlinesWithSource(response); } catch (ReliableHttpException ex) { Console.WriteLine("ResponseTest: {0}", ex.ResponseText); KoanAssert.That(ex.Message, Is.StringContaining("You cannot request more than 500 news headlines"), "The error will talk about 'You cannot request more than 500 news headlines'"); } gate.Set(); }, state: null); gate.WaitOne(TimeSpan.FromSeconds(60)); //Never wait indefinately }
public void FetchNews_sync() { var ctx = new CIAPI.Rpc.Client(RPC_URI, STREAMING_URI, AppKey); ctx.LogIn(USERNAME, PASSWORD); ListNewsHeadlinesResponseDTO news = ctx.News.ListNewsHeadlinesWithSource("dj", "UK", 10); //do something with the news ctx.LogOut(); }
public void FetchNews_sync() { var ctx = new CIAPI.Rpc.Client(RPC_URI); ctx.LogIn(USERNAME, PASSWORD); ListNewsHeadlinesResponseDTO news = ctx.ListNewsHeadlines("UK", 10); //do something with the news ctx.LogOut(); }
public void FetchNews_async() { var ctx = new CIAPI.Rpc.Client(RPC_URI, STREAMING_URI, AppKey); var gate = new AutoResetEvent(false); ctx.BeginLogIn(USERNAME, PASSWORD, a => { ctx.EndLogIn(a); ctx.News.BeginListNewsHeadlinesWithSource("dj", "UK", 10, newsResult => { ListNewsHeadlinesResponseDTO news = ctx.News.EndListNewsHeadlinesWithSource(newsResult); //do something with the news ctx.BeginLogOut(result => { gate.Set(); }, null); }, null); }, null); gate.WaitOne(); }