Я новичок в C#, и я пытаюсь написать код, который выполняет последовательную связь с другим оборудованием. Я использую async/жду, чтобы выполнить эту работу. но я хочу обновить индикатор выполнения из ожидаемого метода, считая, что мой метод находится в другом классе с именем class1 и существует в файле class1.cs, прикрепленном к решению. У меня есть один текстовый блок, один индикатор выполнения и одна кнопка запуска в коде XAML.Обновление пользовательского интерфейса от ожидаемого метода другого класса в приложении универсальных окон
Как обновить «progressbar1» из метода «DummyWork» в классе «Class1»?
Буду признателен, если кто-то может мне помочь в этом вопросе. Мой шаблон кода выглядит следующим образом.
MainPage.xaml.cs содержание:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using System.Threading.Tasks;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
using System.Threading;
using uwptestapp1classes;
namespace uwptestapp1
{
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
textBlock.Text = string.Empty;
}
private async void startBtn_Click(object sender, RoutedEventArgs e)
{
int asyncResult = 0;
progressbar1.Value = 0;
startBtn.IsEnabled = false;
textBlock.Text += "button press log: " + startBtn.Content + " button is pressed" + Environment.NewLine;
DateTime previousTime = DateTime.Now;
asyncResult = await Task.Run(() => Class1.DummyWork(previousTime));
textBlock.Text += "Task have been done" + Environment.NewLine;
startBtn.IsEnabled = true;
}
}
}
Class1.cs содержание:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Windows.UI.Xaml.Controls;
using System.Threading;
namespace uwptestapp1classes
{
public class Class1
{
public static int DummyWork(DateTime previoustime)
{
for (int i = 0; i <= 100;)
{
if ((DateTime.Now - previoustime).Milliseconds >= 500)
{
/* UI update code
* update "progressbar1.value"
*/
previoustime = DateTime.Now;
}
//delay without using task.delay
for (int myCounter = 0; myCounter < 50000000;)
{
myCounter++;
}
}
return 1;
}
}
}
У меня вопрос не возникает. Пожалуйста, см. [Почему «Может ли кто-нибудь помочь мне?» не вопрос?] (http://meta.stackoverflow.com/questions/284236/why-is-can-someone-help-me-not-an-actual-question) – BradleyDotNET
@BradleyDotNET Спасибо за ваш комментарий. Я обновил свой точный вопрос. – Arash
[Похоже, вы не проводили много исследований по этому вопросу) (https://www.google.com/?gws_rd=ssl#q=uwp+progress+bar+from+task+c%23). У вас есть? – Romasz