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应用商店应用程序中的任务延迟 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", "-.. "},

它变黑后停止工作,Windows应用商店应用程序,有什么想法吗?

尝试用以下内容替换您的
任务。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);