繁体   English   中英

我无法处理这些类C#uwp

[英]I can not handle these classes c# uwp

到现在为止,我只有小型应用程序,但是现在我无法处理这些类c#uwp

我想将代码分成几个类,每个类将处理一些参数。 类会将参数值发送到主页。 但是当我尝试显示这些参数时,即使文本文件看起来已修改,它们也始终为零。

我有主页

namespace airflow
{
    public sealed partial class MainPage : Page
    {

    }

    public MainPage()
    {

    }

    private async void main_page_Loaded(object sender, RoutedEventArgs e)
    {
            param_perimetrala read = new param_perimetrala();
            ora_start_perimetrala = read.start_perimetrala;
            var mesaj = new MessageDialog(ora_start_perimetrala.ToString());
            var res = await mesaj.ShowAsync();
    }
}

和一堂课

namespace airflow
{
    public class param_perimetrala
    {
        public static int ora_start_perimetrala;
        public int minut_start_perimetrala;
        public int ora_stop_perimetrala;
        public int minut_stop_perimetrala;
        public int ore_ciclu_perimetrala;
        public int minut_ciclu_perimetrala;
        public int contor_ore_perimetrala = 0;
        public int contor_minute_perimetrala = 0;
        public int contor_sec_perimetrala = 0;

        public async void readfile_perimetrala()
        {
            StorageFolder folder = ApplicationData.Current.LocalFolder;
            StorageFile perimetrala_file = await folder.CreateFileAsync("parametrii_perimetrala.txt", CreationCollisionOption.OpenIfExists);

            var readFile_perimetrala = await FileIO.ReadLinesAsync(perimetrala_file);
            int count = 0;
            foreach (var line in readFile_perimetrala)
            {
                string[] split_perimetrala = line.Split(new string[] { "=" }, StringSplitOptions.RemoveEmptyEntries);
                var temp = split_perimetrala[1];
                if (count == 0)
                {
                    ora_start_perimetrala = Int32.Parse(temp);
                }
                if (count == 1)
                {
                    minut_start_perimetrala = Int32.Parse(temp);
                }
                if (count == 2)
                {
                    ora_stop_perimetrala = Int32.Parse(temp);
                }

                count = count + 1;
            }
        }

        public int start_perimetrala
        {
            get { return ora_start_perimetrala; }
            set { ora_start_perimetrala = value; }
        }
    }
}

如何在首页中发送ora_start_perimetrala值?

在此处输入图片说明

main_page_Loaded事件处理程序方法中,您正在调用read_file_perimetralaread_file_perimetralaasync void 这意味着,一旦到达await语句,并且await实际上是可等待的(不立即返回),则该方法将把其余工作搁置一旁,直到完成了等待的部分。 然后,它重新启动并运行其余部分。 在将其放在一边的这段时间内,调用线程将继续在需要的地方运行。

您需要将该任务设置为Task并等待对它的调用,以便可以确保在继续工作之前已填充参数。

更改您的readFile_perimetrala像这样:

public async Task readfile_perimetralaAsync()

将整个main_page_Loaded事件处理程序更改为如下所示...

private async void main_page_Loaded(object sender)
{
    param_perimetrala read = new param_perimetrala();
    await read.readfile_perimetralaAsync();
    var mesaj = new MessageDialog(read.start_perimetrala.ToString());
    var res = await mesaj.ShowAsync();
}

在您的代码中,您正在将值分配给方法,但是我可以告诉您您想要int值。

只是一些轻量级的示例,可以帮助您开始理解Task和async等待。 不要将其用作资源,而只是让您好奇地进行更深入的研究,因为这是一个简单但相当深入的主题。

public class TaskExamples
{       
    public async void DoAsyncVoid()
    {
        await Task.Delay(200);
    }
    public async Task DoAsyncTask()
    {
        await Task.Delay(200);
    }

    public async Task<int> DoReturnValueTask()
    {
        await Task.Delay(200);
        return 50;
    }

    public async void CallingTasks()
    {
        DoAsyncVoid(); //This can't use await because it is 'void' so the next line is ran as soon as this command reaches the first 'true awaitable' await.
        await DoAsyncTask(); //This runs before DoAsyncVoid is complete.
        var value = await DoReturnValueTask(); //This waits until 'DoAsyncTask' is complete because it is a Task and awaited.
        await new MessageDialog(value.ToString()).ShowAsync(); //This waits until 'DoReturnValueTask' is complete and value will be 50 in this case.

        //All code here waits until the Dialog is closed because it is also awaited.
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM