Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我不能处理这些类c#uwp_C#_Uwp - Fatal编程技术网

我不能处理这些类c#uwp

我不能处理这些类c#uwp,c#,uwp,C#,Uwp,到目前为止,我只有一些小应用程序,但现在我无法处理这些类c#uwp 我想把代码分成几个类,每个类将处理几个参数。类将参数值发送到主页面。但当我试图显示这些参数时,它们始终为零,即使文本文件显示为已修改 我有主页 namespace airflow { public sealed partial class MainPage : Page { } public MainPage() { } private async void mai

到目前为止,我只有一些小应用程序,但现在我无法处理这些类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_周长值


在您的
主页面\u Loaded
事件处理程序方法中,您正在调用
read\u file\u perimetrala
,但是
read\u file\u perimetrala
异步无效的
。这意味着,一旦您得到一个
await
语句,并且该等待实际上是可等待的(不是立即返回),那么该方法将把其余的工作放在一边,直到等待的部分完成。然后,它重新拾起并运行其余的。在将其放在一边的过程中,调用线程将继续在需要的地方运行

您需要将此作为一项任务,并等待对is的调用,以便在继续工作之前确保参数已填充

将您的
readFile\u perimetrala
更改为:

public async Task readfile_perimetralaAsync()
将整个
主页\u加载的
事件处理程序更改为这样

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值

只是一些轻量级的例子来帮助开始理解任务和异步等待。不要把这当作一个资源,而只是让你好奇地去深入挖掘,因为这是一个简单但相当深入的主题

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.
    }
}
公共类任务示例
{       
公共异步void DoAsyncVoid()
{
等待任务。延迟(200);
}
公共异步任务DoAsyncTask()
{
等待任务。延迟(200);
}
公共异步任务DoReturnValueTask()
{
等待任务。延迟(200);
返回50;
}
公共异步void CallingTasks()
{
DoAsyncVoid();//这不能使用await,因为它是“void”,所以当此命令到达第一个“true awaitable”await时,将立即运行下一行。
等待DoAsyncTask();//此操作在DoAsyncVoid完成之前运行。
var value=await DoReturnValueTask();//这将一直等到“DoAsyncTask”完成,因为它是一个任务,并且已等待。
wait new MessageDialog(value.ToString()).ShowAsync();//这将等待“DoReturnValueTask”完成,在这种情况下,值将为50。
//这里的所有代码都会等待对话框关闭,因为它也在等待。
}
}

您从不给它一个值,
int
的默认值为零。你期待什么?如果(count==0){ora_start_perimetrala=Int32.Parse(temp);}我看不到你在设置后显示该值。还有更多的代码吗?我们没有看到调用
readfile\u perimetrala
。请提供一个可验证的例子。事实上,我们不知道发生了什么,甚至不知道你想做什么。@UngureanuVictor:编辑问题,不要只是在你自己的问题上添加评论。看看你的评论。你觉得这有什么可读性吗?错误CS4001不能等待“方法组”@UngureanuVictor好的,我正在更新我的答案。这是我看到的第一个问题,但情况还有很多。我是瞎子吗?在OPs代码中,我没有看到任何读取\u文件\u周界的调用。@UngureanuVictor没问题。。我正在用一些任务示例更新答案,只是为了让您开始。任务还有很多,所以不要把这当作一个教程,更多的是让你的脚湿润,朝着正确的方向工作。@Crowcoder It'是他
param_perimetrala
课程中的第一个方法(唯一的方法)。因为他的C#代码不是用标准语言编写的,而且问题的格式也不好,所以写下来就有点难了。