C# Windows应用商店应用程序中的任务延迟 string word=“sos”; 字典代码=新字典 { {“a”、“-”}、{“b”、“-…”}、{“c”、“-.-”}、{“d”、“-…”}、, "e,",","f,".-","g","-","h","h",, "i,",".","j,"--","k,"--","l,"--",, {“m”、“--”}、{“n”、“--.”、{“o”、“--”}、{“p”、“--”}、, {“q”、“--.-”}、{“r”、“-”}、{“s”、“…”}、{“t”、“-”}、, {“u”、“.-”}、{“v”、“…-”}、{“w”、“…-”}、{“x”、“-…-”}、, {“y”、“-.-”}、{“z”、“-…”}、{“0”、“-”}、{“1”、“-”}、, {"2", "..---"}, {"3", "...--"}, {"4", "....-"}, {"5", "....."}, {"6", ".----"}, {"7", "..---"}, {"8", "...--"}, {"9", "....-"} }; 异步公共void RunMorseCode() { foreach(word.ToCharArray()中的字符c) { 字符串rslt=代码[c.ToString()].Trim(); foreach(rslt.ToCharArray()中的字符c2) { 如果(c2=='。) { gridHalfFront。不透明度=0; 等待任务。延迟(100); } else如果(c2=='-') { gridHalfFront。不透明度=0; 等待任务。延迟(1000); } 不透明度=1; } } }
它变黑后停止工作,Windows应用商店应用程序,有什么想法吗?尝试用以下内容替换您的C# Windows应用商店应用程序中的任务延迟 string word=“sos”; 字典代码=新字典 { {“a”、“-”}、{“b”、“-…”}、{“c”、“-.-”}、{“d”、“-…”}、, "e,",","f,".-","g","-","h","h",, "i,",".","j,"--","k,"--","l,"--",, {“m”、“--”}、{“n”、“--.”、{“o”、“--”}、{“p”、“--”}、, {“q”、“--.-”}、{“r”、“-”}、{“s”、“…”}、{“t”、“-”}、, {“u”、“.-”}、{“v”、“…-”}、{“w”、“…-”}、{“x”、“-…-”}、, {“y”、“-.-”}、{“z”、“-…”}、{“0”、“-”}、{“1”、“-”}、, {"2", "..---"}, {"3", "...--"}, {"4", "....-"}, {"5", "....."}, {"6", ".----"}, {"7", "..---"}, {"8", "...--"}, {"9", "....-"} }; 异步公共void RunMorseCode() { foreach(word.ToCharArray()中的字符c) { 字符串rslt=代码[c.ToString()].Trim(); foreach(rslt.ToCharArray()中的字符c2) { 如果(c2=='。) { gridHalfFront。不透明度=0; 等待任务。延迟(100); } else如果(c2=='-') { gridHalfFront。不透明度=0; 等待任务。延迟(1000); } 不透明度=1; } } },c#,windows-store-apps,C#,Windows Store Apps,它变黑后停止工作,Windows应用商店应用程序,有什么想法吗?尝试用以下内容替换您的任务。Delay()调用: string word = "sos"; Dictionary<string, string> Codes = new Dictionary<string, string> { {"a", ".- "}, {"b", "-... "}, {"c", "-.-. "}, {"d", "-.. "},
任务。Delay()
调用:
string word = "sos";
Dictionary<string, string> Codes = new Dictionary<string, string>
{
{"a", ".- "}, {"b", "-... "}, {"c", "-.-. "}, {"d", "-.. "},
{"e", ". "}, {"f", "..-. "}, {"g", "--. "}, {"h", ".... "},
{"i", ".. "}, {"j", ".--- "}, {"k", "-.- "}, {"l", ".-.. "},
{"m", "-- "}, {"n", "-. "}, {"o", "--- "}, {"p", ".--. "},
{"q", "--.- "}, {"r", ".-. "}, {"s", "... "}, {"t", "- "},
{"u", "..- "}, {"v", "...- "}, {"w", ".-- "}, {"x", "-..- "},
{"y", "-.-- "}, {"z", "--.. "}, {"0", "-----"}, {"1", ".----"},
{"2", "..---"}, {"3", "...--"}, {"4", "....-"}, {"5", "....."},
{"6", ".----"}, {"7", "..---"}, {"8", "...--"}, {"9", "....-"}
};
async public void RunMorseCode()
{
foreach (char c in word.ToCharArray())
{
string rslt = Codes[c.ToString()].Trim();
foreach (char c2 in rslt.ToCharArray())
{
if (c2 == '.')
{
gridHalfFront.Opacity = 0;
await Task.Delay(100);
}
else if(c2 == '-')
{
gridHalfFront.Opacity = 0;
await Task.Delay(1000);
}
gridHalfFront.Opacity = 1;
}
}
}
显然,
Task.Delay()
是。我刚刚在Windows8.1和Windows10的WindowsStore应用程序中的VisualStudio2015RC中检查了这一点。这两种情况下都有效,但你最好换一个任务。延迟你的代码,否则闪烁效果就看不见了——也许这就是你认为的“变黑”?
我建议你在后面加一行
不透明度=1
e、 g.在此处添加
等待任务。延迟(100)
这使得闪烁更加明显,应用程序感觉更加“响应”。问题是合乎逻辑的。解决方案:
new System.Threading.ManualResetEvent(false).WaitOne(milliseconds);
您还可以使用混合和创建动画和故事板等状态
任务。延迟在这里可以正常工作。引用的MSDN线程中的问题实际上是由于计时器解析。这是一个众所周知的问题,当延迟少量的时间(例如1毫秒),但100毫秒或1000毫秒不应该受到严重影响。谢谢-我只是看到了线程,认为它可能是有用的。
gridHalfFront.Opacity = 1;
await Task.Delay(1000);