首页 > 编程语言 >C#-随笔杂记

C#-随笔杂记

时间:2024-08-09 10:19:44浏览次数:10  
标签:Console C# Sex ConcurrentDictionary 杂记 WriteLine new 随笔 public

1.ConcurrentDictionary

ConcurrentDictionary  并发字典,保证多线程情况下的安全性

Dictionary  非线程安全集合

using System.Collections.Concurrent;
    class Program
    {
        static void Main(string[] args)
        {
            ConcurrentDictionary<string, Student> students = new ConcurrentDictionary<string, Student>();
            ConcurrentDictionary<string, Teacher> teachers = new ConcurrentDictionary<string, Teacher>();


            // 添加键值对
            students.TryAdd("刘一凡", new Student {Grade=1 ,Sex=Sex.Male,Age = 10});
            teachers.TryAdd("顾老师", new Teacher {TeachSubject="语文",Sex = Sex.Female,Age=45 });

            ////查询顾老师的信息
            if (teachers.TryGetValue("顾老师", out var teacher))
            {
                Console.WriteLine($"顾老师教授科目为:{teacher.TeachSubject}");
                Console.WriteLine($"顾老师年龄为:{teacher.Age}");
            }
            if (students.TryGetValue("刘一凡", out var student))
            {
                Console.WriteLine($"刘一凡所在年级为:{student.Grade}");
                Console.WriteLine($"刘一凡性别为:{student.Sex}");
            }
        }
    }
    enum Sex
    {
        Male,
        Female
    }

    internal class People
    {
        private int age;
        /// <summary>
        /// 年龄
        /// </summary>
        public int Age
        {
            get { return age; }
            set { age = value; }
        }

        private Sex sex;
        /// <summary>
        /// 性别
        /// </summary>
        public Sex Sex
        {
            get { return sex; }
            set { sex = value; }
        }

    }
    internal class Student:People
    {
        private int grade;
        /// <summary>
        /// 年级
        /// </summary>
        public int Grade
        {
            get { return grade; }
            set { grade = value; }
        }

    }

    internal class Teacher : People
    {
        private string teachSubject;
        /// <summary>
        /// 教授科目
        /// </summary>
        public string TeachSubject
        {
            get { return teachSubject; }
            set { teachSubject = value; }
        }

    }

 

 

2.ManualResetEvent

表示必须手动重置信号的线程同步事件。 无法继承此类。

public sealed class ManualResetEvent : System.Threading.EventWaitHandle

        static ManualResetEvent mre = new ManualResetEvent(false);
        static void Main(string[] args)
        {
            Thread th = new Thread(new ThreadStart(()=>
            {
                Thread.Sleep(1000);
                Console.WriteLine("Async Time =" + DateTime.Now.ToString("hh:mm:ss fff"));
                Thread.Sleep(5000);
                mre.Set();

            }));
            th.Start();
            Console.WriteLine("Start Time =" + DateTime.Now.ToString("hh:mm:ss fff"));
            mre.Reset();
            bool isback = mre.WaitOne();
            Console.WriteLine($"IsBack = {isback}");
            Console.WriteLine("End Time =" + DateTime.Now.ToString("hh:mm:ss fff"));
            Console.Read();
        }

 

3.wpf“调用线程无法访问此对象,因为另一个线程拥有该对象。

this.Dispatcher.Invoke(new Action(delegate
{

}));

4.Windows Presentation Foundation (WPF) 项目中不支持 Application

重新添加引用:PresentationCore      PresentationFramework    WindowsBase

标签:Console,C#,Sex,ConcurrentDictionary,杂记,WriteLine,new,随笔,public
From: https://www.cnblogs.com/echo-efun/p/18346843

相关文章

  • AI新玩法!阿里云联合优酷跨界打造Create@AI江湖创作大赛
    随着网剧《少年白马醉春风》的热播,许多人心中的江湖梦被唤醒,渴望踏入那个充满传奇色彩的影视世界,体验一段属于自己的江湖之旅。在AIGC技术日益成熟的今天,这一梦想变得触手可及。阿里云携手优酷,发起了Create@AI江湖创作大赛,将网剧《少年白马醉春风》这一热门影视IP与阿里云......
  • 高通C6490 android13 GMS 认证之CtsCarrierApiTestCases
    我们机器是没有SIM卡的,只需要连接wifi。跑CTS测试,CtsCarrierApiTestCases的测试结果都是报没有SIM卡的错误。如下:android.carrierapi.cts.ApnDatabaseTest#testQueryConflictCase fail ThistestrequiresaSIMcardwithcarrierprivilegerulesonit. 解决方法:需要......
  • Windows Remote Desktop Licensing (RDL) 服务起源于 Microsoft 的远程桌面服务(Remote
    WindowsRemoteDesktopLicensing(RDL)服务起源于Microsoft的远程桌面服务(RemoteDesktopServices,RDS),最初被称为终端服务(TerminalServices)。以下是一些关键的历史背景和发展过程:1. 早期背景WindowsNT4.0TerminalServerEdition:在1998年,微软推出了WindowsNT4.0......
  • 使用Qt实现自定义GraphicsView
    在本文中,我们将介绍如何使用Qt实现一个自定义的GraphicsView,主要是作为笔记使用QGraphicsView框架方面的使用手法、套路,对代码就不做过多的解释了,它具有以下功能:显示图像可拖动的十字标记(CrossMarkItem)可调整大小的ROI(RegionofInterest)矩形FPS和日期时间显示保存和......
  • OpenSSH 信息泄漏漏洞 (CVE-2023-51385)【低可信】
    详细信息跳转此页面:https://blog.csdn.net/python10101/article/details/140083056?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EYuanLiJiHua%7EPosition-3-140083056-blog-137541643.235%5Ev43%5Epc_blog_bottom_relevance_base3......
  • 【VMware vCenter】一次性说清楚 vCenter Server 的 CLI 部署方式。
    VMwarevCenterServer是VMwarevSphere解决方案的核心组件,用于管理多个ESXi主机并实现更多高级功能特性(如HA、DRS以及FT等),相信大家已经非常熟悉了。对于vCenterServer的安装和部署,可能大部分人会选择使用GUI方式部署vCenterServer,并使用vCenterServerISO镜像......
  • adb Connection reset by peer的解决方法
    最近在编译一个老项目,项目中依赖了很多第三方库,用gradle编译要20-30分钟,而且内存开销很大。公司配的15G内存的电脑,一次编译能用到14G。编译的时候,ubuntu有概率会卡死(卡死的问题,网上的方法我尝试了一轮,但是没有用,物理重启电脑有效)。此为背景。昨晚重启之后,我发现adb用不了了。报......
  • 使用 defineNuxtComponent`定义 Vue 组件
    title:使用defineNuxtComponent`定义Vue组件date:2024/8/9updated:2024/8/9author:cmdragonexcerpt:摘要:本文介绍了在Nuxt3中使用defineNuxtComponent辅助函数定义类型安全的Vue组件的方法,适用于习惯OptionsAPI的开发者。defineNuxtComponent支持asyncData获取异......
  • 快速基于 ClickHouse + Grafana 搭建可观测性解决方案 - 分布式链路追踪篇(ClickHouse
    引言在ClickHouse,我们认为可观测性仅仅是另一个实时分析问题。作为一款高性能的实时分析数据库,ClickHouse被用于多种场景,包括时间序列数据的实时分析。其应用场景的多样性推动了大量分析函数的发展,这些函数有助于查询大多数数据类型。这些查询特性和高压缩率使得越来越多的用户......
  • 利用ace编辑并预览markdown
    <!DOCTYPEhtml><htmllang="zh-CN"><head><title>ACEinAction</title><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"......