[英]NewsAPI C# library runs on console, hangs on winforms
我在 Visual Studio 2017 Community Edition 下運行了網站上給出的示例,並且運行良好。 但是,當我嘗試在 winforms 庫上運行它時,它掛起,即使給出了完全相同的術語:
主機版
static void Main(string[] args)
{
var newsApiClient = new NewsApiClient("KeyRedacted");
var articlesResponse = newsApiClient.GetEverything(new EverythingRequest
{
Q = "Apple",
SortBy = SortBys.Popularity,
Language = Languages.EN,
From = new DateTime(2018, 10, 16)
});
if (articlesResponse.Status == Statuses.Ok)
{
//code here
Winforms 版本
private void btnSearch_Click(object sender, EventArgs e)
{
var newsApiClient = new NewsApiClient("keyredacted");
var articleResponse = newsApiClient.GetEverything(new EverythingRequest
{
Q = "Apple",
SortBy = SortBys.Popularity,
Language = Languages.EN,
From = new DateTime(2018, 10, 16)
}); //this is where it hangs
if (articleResponse.Status == Statuses.Ok)
{
假設您正在使用這個 client , 您正在調用的方法使用Task.Result
,這可能會導致死鎖。 似乎合理,因為代碼/簽名和示例匹配。
我會像這樣為 WinForms 重寫您的代碼:
private async void btnSearch_Click(object sender, EventArgs e)
{
var newsApiClient = new NewsApiClient("keyredacted");
var articleResponse = await newsApiClient.GetEverythingAsync(new EverythingRequest
...
如果您對不在代碼中使用異步方法感到厭煩,您可以嘗試在Task.Run(() => /* stuff */);
運行它Task.Run(() => /* stuff */);
另見: https : //blogs.msdn.microsoft.com/pfxteam/2012/04/13/should-i-expose-synchronous-wrappers-for-asynchronous-methods/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.