带AppService和定期更新的UWP
问题描述:
我是c#和uwp的新手,目前我正在开发一个简单的应用程序来尝试UWP中的应用程序服务。带AppService和定期更新的UWP
我想要做的是创建一个UI和一些逻辑背后的UWP应用程序,然后连接到一个应用程序服务(Windows运行时组件),在那里我生成一个数字。这个号码然后显示在用户界面上。它工作得很好,但我想扩展这个定期更新的例子 - 我想定期更改该数字(例如每隔五秒)。
我在寻求一些帮助如何做到这一点。我可以使用定时器定期将消息发送到应用服务,并用新号码接收响应。但我实际上不喜欢这种方法。
相反,我想直接在应用程序服务中使用计时器,并定期在主应用程序中收到响应。这是可能的吗?
UPDATE
这是AppService服务的方法,该方法生成的随机数和发送到主应用程序的响应。
private async void AppServiceConnection_RequestReceivedAsync(AppServiceConnection sender, AppServiceRequestReceivedEventArgs args)
{
var deferral = args.GetDeferral();
var requestMessage = args.Request.Message;
var responseMessage = new ValueSet();
var tasks = new List<Task>();
foreach (var item in requestMessage)
{
if (item.Value.ToString() == "k")
{
var task1 = Task.Run(() =>
{
responseMessage.Add(item.Value.ToString(), rand.NextDouble().ToString());
});
tasks.Add(task1);
}
if (item.Value.ToString() == "k2")
{
var task2 = Task.Run(() =>
{
responseMessage.Add(item.Value.ToString(), rand.NextDouble().ToString());
});
tasks.Add(task2);
}
}
Task.WaitAll(tasks.ToArray());
await args.Request.SendResponseAsync(responseMessage);
deferral.Complete();
}
这是主应用程序中的方法,它定期将消息发送到应用程序服务。
private async void timerCallback(object state)
{
appServiceConnection = new AppServiceConnection
{
AppServiceName = "...",
PackageFamilyName = "...";
};
var status = await appServiceConnection.OpenAsync();
switch (status)
{
default:
break;
}
var message = new ValueSet();
message.Add("0", "k");
message.Add("1", "k2");
var response = await appServiceConnection.SendMessageAsync(message);
switch (response.Status)
{
default:
break;
}
await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.High,
() => {
randomNumbersString = string.Format("Task1: {0} \nTask2: {1}",
response.Message.Where((x) => x.Key == "k").First().Value.ToString(),
response.Message.Where((x) => x.Key == "k2").First().Value.ToString());
});
它按预期工作,但我想从主应用程序移动计时器到应用程序服务,这有可能吗?
非常感谢你
答
你可以考虑使用事件。 Window Runtime Component
应宣布类似UpdateGUI
的事件。您应该在主应用程序中订阅该事件。
现在使用task
以适当的参数周期性地引发事件。
的示例代码,它可以帮助你提供为msdn
请分享你尝试过什么直到现在。 – MKR