我正在做一个播放几个视频的项目。为了能够播放这些视频,我需要在应用程序通过HttpClientfrom请求时获取它们的数据System.Net.Http。一切正常,当应用程序处于前台时,UWP 应用程序会从 Internet 下载所需的信息。
一旦应用程序离开前台并被用户最小化HttpClient,无论是来自命名空间System.Net.Http还是Windows.Web.Http命名空间,都不起作用。我什至试图在那里设置一个断点,一旦我继续前进HttpClient就不会响应该await client.GetAsync()方法并停留在那里而不返回任何结果,除非您再次激活该应用程序然后它返回任何值。我无法使用,BackgroundTasks因为他们需要,Triggers但我需要按需访问数据。
我也读过这篇文章,描述了请求,ExtendedExecutionState但结果还是一样。当应用程序收到播放项目列表的请求时,我会请求此状态。即使在获得结果为 之后Allowed,HttpClient也具有与上述相同的行为。
有没有什么方法可以在请求时执行互联网相关查询并获取一些信息?
我执行从互联网访问数据的代码是:
public static async Task<string> GetResponseDataFromAPI(string apiRequestUrl, CancellationTokenSource cts = default)
{
cts = cts ?? new CancellationTokenSource(TimeSpan.FromSeconds(20));
try
{
var responseData = await AuthRequestHelper.globalHttpClient.GetAsync(apiRequestUrl, cts.Token);
var result = await responseData.Content.ReadAsStringAsync();
return result;
}
catch (Exception ex)
{
INotifyHelper.iNotifyObject.IsVideoLoading = false;
INotifyHelper.iNotifyObject.IsDataLoading = false;
// show error
return "{ \"error\": {\"code\": " + $"\"{ex.HResult}\", \"message\": \"{ex.Message}\"" + "} }";
}
}
然后分析返回的值以从中获取所需的数据。
执行请求的代码ExtendedExecutionSession是:
public static async void RequestBackgroundExtendedExecution()
{
using (var session = new ExtendedExecutionSession())
{
session.Reason = ExtendedExecutionReason.Unspecified;
session.Description = "Background Playlist Playback";
session.Revoked += Session_Revoked;
if (await session.RequestExtensionAsync() is ExtendedExecutionResult result)
{
if (result == ExtendedExecutionResult.Denied)
{
// show user that background playlist playback will not be possible
}
}
}
}
在最小化状态下,是否可以执行任何操作来执行请求的操作?指向正确方向的一点帮助将不胜感激。谢谢
幕布斯7119047
守着星空守着你
相关分类