首页 > 编程语言 >C#同步方法中如何调用异步方法

C#同步方法中如何调用异步方法

时间:2024-04-26 12:56:58浏览次数:19  
标签:异步 Console C# Process static result WriteLine 方法

最近看了个关于同步方法中调用异步方法的文章,有感而发,先把代码放在这里,有时间再补充理解

namespace 同步方法中调用异步方法
{
    internal class Program
    {
        //static void Main(string[] args)
        //{
        //    Console.WriteLine("start    " + DateTime.Now.ToString());
        //    Producer();

        //}
        static void Main(string[] args)
        {  
            Console.WriteLine("start    " + DateTime.Now.ToString());
            while (true)
            {
                Task.Run(() => { Producer(); });
                Thread.Sleep(100);
            }

        }
        static void Producer()
        {
            var result = Process().Result;
        }
        static async void Producer2()
        {
            //第一种,不获取结果
            //await Process();

            //第二种,获取结果,线程等待,线程数量一直增加
            //var result = Process().Result;

            //第三种,获取结果,异步等待结果,线程数量稳定
            var result = await Process();
            Console.WriteLine(result);
        }
        static async Task<bool> Process()
        {
            await Task.Run(() =>
            {
                Thread.Sleep(1000);
            }); 
            Console.WriteLine("end      " + DateTime.Now.ToString());
            return true;
        }
    }
}

 

标签:异步,Console,C#,Process,static,result,WriteLine,方法
From: https://www.cnblogs.com/hanzq/p/18159797

相关文章

  • 从REPLACEMENT_OPERATOR_NEW_AND_DELETE看UE的堆内存管理及gcc相关实现
    观察为了让庞大代码库看起来更简洁一些,UE使用了不少C/C++黑魔法:宏。把一些重复或者繁琐的实现细节隐藏在了宏里面(例如最为常见且繁琐的GENERATED_BODY宏),尽管代码看起来更简洁,但也隐藏了一些(重要的)细节。在看UE插件实现时,意外的看到IMPLEMENT_MODULE宏定义中,不仅包含了初始化......
  • Sharding-JDBC测试ChatGPT
    问题:Sharding-JDBC对订单表进行分库分表,16个库,每个库16张表。分片键订单id、用户id。分库规则,对分片键按1000取模再对16取模。分表规则,对分片键按1000取模再对256取模。配置文件如何写,以及ComplexKeysShardingAlgorithm实现代码? 回答:针对订单表进行分库分表,每个库16张表,分片......
  • 风机故障诊断方法短述
    风机故障诊断方法短述问题描述风机故障诊断主要包括状态监测、风机故障预测两类任务。风机状态监测将风机运行参数(如SCADA数据、振动信号等)作为输入,输出当前风机是否存在故障,例如风机叶片覆冰检测,能够通过风机的运行参数判断当前叶片是否存在覆冰。风机故障预测将风机运行参数......
  • 【Qt专栏】C++删除空指针
    简短不看版:最佳实践if(pMyClass) //这里,pMyClass是指向某个类的指针..{deletepMyClass;pMyClass=NULL; //这句不能少}  完全可以....可能有不少人对Delete删除空指针的用法不屑一顾,但在实际运用当中, 却有不少人会犯类似的错误,最典......
  • 你唯一需要的是“Wide Events”,而非“Metrics、Logs、Traces”
    CharityMajors的这句话可能是对科技行业当前可观察性状态的最好总结——完全的、大规模的混乱。大家都很困惑。什么是trace?什么是span?一行日志就是一个span吗?如果我有日志,我还需要trace吗?如果我有很好的metric,为什么还需要trace?诸如此类的问题不胜枚举。Charity与 Ho......
  • latex中使用xcolor实现颜色的饱和度
    一、背景使用latex编写文章时,会遇到如下场景,使用多个颜色表达多个人的表达内容。其中代表说话人的颜色更深(饱和度高),而说话人内容的背景颜色要浅(饱和度低),这样可以清晰的将不用人的内容进行区别。例子如下,其中红色的方框表示说话人的颜色,说话的内容是用同RGB+饱和度实现。二、解......
  • Lmbench 的使用方法以及解析运行结果
    1.Lmbench简介Lmbench 是一款简易可以移植的内存测试工具,其主要功能有,带宽测评(读取缓存文件、拷贝内存、读/写内存、管道、TCP),延时测评(上下文切换、网络、文件系统的建立和删除、进程创建、信号处理、上层系统调用、内存读入反应时间)等功能。2.下载和安装官网地址:http://ww......
  • docker存储配置与管理
    一、Docker存储概念1、容器本地存储与Docke存储驱动容器本地存储:每个容器都被自动分配了内部存储,即容器本地存储。采用的是联合文件系统。通过存储驱动进行管理。容器本地存储空间:分层结构构成,由一个可写容器层和若干只读的镜像层组成。联合文件系统:Docker的一种底层技术,由存......
  • 1、oracle数据库-导入导出
    Oracle数据库的导入导出主要有三种方式:使用pl、sql开发工具导入导出dmp文件方式:这是最常用的导入导出方式,生成的dmp文件是二进制的,可以跨平台操作,并且包含权限信息,也支持大字段数据,使用最广泛。在导出语法中,可以通过指定“full=y”和“ignore=y”参数来进行整个数据库的......
  • JUC工具(LockSupport)
    LockSupport用来创建锁和其他同步类的基本线程阻塞LockSupport用来创建锁和其他同步类的基本线程阻塞原语。简而言之,当调用LockSupport.park时,表示当前线程将会等待,直至获得许可,当调用LockSupport.unpark时,必须把等待获得许可的线程作为参数进行传递,好让此线程继续运行LockSuppo......