[英]C# string Thread.Sleep()
嗨,我目前正在使用Thread.Sleep(200); 在文本之间,它看起来像旧的口袋妖怪游戏,文本不是一次全部出现,而是像这样的单词有点滞后
Console.Write("help"); Thread.Sleep(200); Console.Write("me");
而且我想知道是否可以将Thread.Sleep(200)
命名/缩短为Ts200
类的Ts200
。 (我的意思是发短信)。 因此,它并不混乱。 因此,使用字符串可能会像这样。
string Ts200
Ts200 = Thread.Sleep(200)
Console.Write("help"); Ts200; Console.Write("me")
但这不起作用。
我收到此错误:
无法将类型void隐式转换为字符串
一种简单的方法是将字符串split
为空格上的数组,然后在它们上循环。
using System;
using System.Threading;
public static void slowType(string fullSentence, int millis_pause)
{
string[] words = fullSentence.Split(' ');
foreach(string s in words)
{
Console.Out.Write(s);
Thread.Sleep(millis_pause);
//we must reintroduce the space, since we were splitting on it.
Console.Out.Write(' ');
}
//optionally ; start a new line at the end of the sentence
Console.Out.Write("\r\n");
}
用法示例:
public static void Main()
{
string sentence = "i am a terribly slow typist";
slowType(sentence, 200);
}
如果在Ts200
之后不介意()
,请尝试使用lambda :
Action Ts200 = () => Thread.Sleep(200);
...
Ts200();
但是,即使Ts200()
可能比Thread.Sleep(200)
可读性差,这就是为什么不这样做。
您调用Thread.Sleep(200);
就其本身而言,它不包含任何值。 因此,您不能返回任何值,也不能为其分配任何值,除非方法参数为Thread.Sleep("Here belongs the method parameter, this method accepts an 'int' value")
。 int
方法参数设置您要暂停主线程多少毫秒。
尝试这样的事情:
main
方法是应用程序执行后的入口点。 因此,当您启动应用程序时,可以调用main
方法并执行它。
static void Main(string[] args)
{
string sentence = "Here you enter your sentence...";
string[] words = sentence.Split(' ');
OutputDelayedText(words);
}
string sentence
是包含要在控制台上输出的句子的string
变量。 因此,我们使用.Split(' ')
方法将句子拆分为单个单词。 这将在每个空格' '
上分开弹簧,并将单个单词放入string[]
数组中。 请注意,您必须在.Split('')
方法中使用这些''
而不是您可能习惯的""
。 那是因为该方法接受一个char
值,而那些''
表示您只是将一个char作为方法参数。
因此,最后我们将Word array
作为方法参数调用OutputDelayedText()
方法。
private static void OutputDelayedText(string[] myText)
{
foreach (var word in myText)
{
Console.Write(word + " ");
Thread.Sleep(200);
}
}
现在,我们使用一个foreach
循环来遍历数组,并将数组的每个元素(句子中的单个单词)写到控制台的一行中。 如果您不熟悉foreach
也可以使用for
或while
循环。
在Generell中,我建议您使用Task.Delay()
。 或在WinForms Backgroundworker
,这些将允许您在不同的线程上工作,并且如果您暂停这些线程,则不会暂停您的主线程。 稍后您将遇到此问题,该问题用于暂停任何进程或在后台执行长任务,以在任务仍在运行时不冻结GUI。
但是,请仅从Thread.Sleep()
开始,但要记住:在编程艺术中,有很多方法可以实现目标,并且您可能会经常遇到更好的解决方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.