加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 21:05:28 所属栏目:百科 来源:网络整理
导读:下面的代码我尝试学习Task类.从输出中,我看到主线程和任务线程同时运行.但我在异步方法中得到警告消息说: “警告1此异步方法缺少’await’运算符并将同步运行.请考虑使用’await’运算符等待非阻塞API调用,或’await Task.Run(…)’执行CPU绑定工作一个后台
下面的代码我尝试学习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);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读