微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 此代码是同步还是异步?

下面的代码我尝试学习Task类.从输出中,我看到主线程和任务线程同时运行.但我在异步方法中得到警告消息说:

“警告1此异步方法缺少’await’运算符并将同步运行.请考虑使用’await’运算符等待非阻塞API调用,或’await Task.Run(…)’执行cpu绑定工作一个后台主题.“

那么下面的代码是同步的吗?

namespace SampleThreadTaskClass
{
    class Program
    {
        static void Main(string[] args)
        {           
            Task task = new Task(ProcessDataAsync);
            task.Start();

            Console.WriteLine("Enter any key");

            string input = Console.ReadLine();
            Console.WriteLine("You entered: " + input);

            Console.ReadLine(); 
        }

        static async void ProcessDataAsync()
        {
            for (int i = 0; i < 20; i++)
            {
                Thread.Sleep(500);
                Console.WriteLine("processing... " + i);
            }
        }
    }
}

解决方法

是的. Thread.Sleep()不是异步的.

见说明:https://msdn.microsoft.com/en-us/library/hh156528.aspx#Example

尝试延迟,然后你可以在它前面添加一个等待,

await Task.Delay(10000);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐