Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.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# 当计时器在屏幕上运行时,如何运行方法?_C#_Taskfactory - Fatal编程技术网

C# 当计时器在屏幕上运行时,如何运行方法?

C# 当计时器在屏幕上运行时,如何运行方法?,c#,taskfactory,C#,Taskfactory,首先,这是一个家庭作业。我应该超越我们所学到的,所以我想到了一个WPM控制台应用程序。 我在计时器上做了很多搜索,但在第一学期,这太让我不知所措了。 所以我找到了一个更简单的方法。问题是,我希望能够调用一些字符串,让用户输入它们,并在最后运行一个计算来确定它们每分钟的字数。我读到使用Task.Factory.StartNew应该让我运行两个方法 class Program { static void Main( string[] args ) { Timer go

首先,这是一个家庭作业。我应该超越我们所学到的,所以我想到了一个WPM控制台应用程序。 我在计时器上做了很多搜索,但在第一学期,这太让我不知所措了。 所以我找到了一个更简单的方法。问题是,我希望能够调用一些字符串,让用户输入它们,并在最后运行一个计算来确定它们每分钟的字数。我读到使用Task.Factory.StartNew应该让我运行两个方法

class Program
{
    static void Main( string[] args )
    {
        Timer go = new Timer( );
        WordBank display = new WordBank( );

        Task.Factory.StartNew(go.timer1_Tick);
        Task.Factory.StartNew(display.LevelOneWords);
        Console.ReadKey( );

    }
}//end main

class Timer
{
public Timer()
{}
    public void timer1_Tick(  )
    {
        int seconds= 0;
        DateTime dt = new DateTime( );

        do
        {
            Console.Write("One minute timer: " + dt.AddSeconds(seconds).ToString("ss"));
            Console.Write("\r");
            seconds++;
            Thread.Sleep(1000);                
        } while ( seconds< 60 );
    }
}//end Timer

class WordBank
{
public WordBank()
{ }

public void LevelOneWords()
{
        string easyWords = "the boy had so much fun at the park.";
        Console.WriteLine("\n\n", easyWords);
        Console.ReadKey( );
}
类程序
{
静态void Main(字符串[]参数)
{
定时器go=新定时器();
WordBank display=newwordbank();
Task.Factory.StartNew(go.timer1_勾选);
Task.Factory.StartNew(display.LevelOneWords);
Console.ReadKey();
}
}//端干管
班级计时器
{
公共计时器()
{}
公共无效计时器1_刻度()
{
整数秒=0;
DateTime dt=newdatetime();
做
{
控制台写入(“一分钟计时器:+dt.AddSeconds(秒).ToString(“ss”);
控制台。写入(“\r”);
秒++;
睡眠(1000);
}而(秒<60);
}
}//结束计时器
类别字库
{
公共WordBank()
{ }
public void LevelOneWords()
{
string easyWords=“这个男孩在公园玩得很开心。”;
Console.WriteLine(“\n\n”,easyWords);
Console.ReadKey();
}

当我运行程序时,计时器会启动一秒钟,然后立即替换为字符串。我是否错误地使用Task.Factory.StartNew?

而不是在他们键入时运行计时器(需要同时运行两个程序),而是尝试获取他们最初开始键入的时间、结束键入的时间,然后进行除法。例如:

static void Main()
{
    // Displays WordBank
    WordBank display = new WordBank();

    var startTime = DateTime.Now;

    // Let them type for X amount of time
    var totalWords = TakeUserInputForXSeconds(45);

    var endTime = DateTime.Now;

    var wpm = totalWords / (endTime.Subtract(startTime).TotalMinutes);
}

对于TakeUserInputForXSeconds方法,我想看一下这篇文章中的信息:

我不太确定你想用你的代码实现什么,它看起来很复杂。为什么你创建了自己的计时器类?为什么你说计时器太超出了你的学习范围,而你却试图使用任务/并行/线程?我喜欢它这是个好主意。我会试试的。谢谢你。