C#开发笔记

1. 跨进程通信

  • 管道

    分为无名管道和有名管道,对数据采用先进先出的方式管理,并严格按顺序操作,管道中的信息只能读一次。管道最大的好处是可以像普通文件一样操作,实现起来比较简单。

  • 消息队列

    队列储存了我们需要处理的消息但并不是及时的拿到其处理结果。消息队列是异步的,和信号相比,能传递更多的信息。与管道相比,消息队列提供了有格式的数据。

  • 共享内存

    允许多个进程在外部通信协议或同步/互斥机制的支持下使用同一个内存段作为中间介质进行通信,是一种很有效的数据通信方式。

2.获取鼠标或键盘消息以做特殊操作

拦截Windows系统消息,通过重写DefWndProc或WndProc函数实现。

3.C#垃圾回收

对象越新,生存周期越短;
垃圾回收:手动释放:Dispose()或Close(),自动释放:Finalize();
初级程序员最好使用自动释放;

4.内存泄露

  • 分类:

    按发生频率分类:常发性、偶发性、一次性;
    按发生位置分类:堆栈内存、非托管堆、泄露托管堆;

  • 定位内存泄露工具:

    CLRProfiler;
    dotTrace;
    winDbg;

5.类和接口

接口可以看作特殊的抽象类,接口是一种约定和承诺,里面不包含任何具体实现。类里面可以有实现,子类可以直接使用父类提供的功能,但是如果设计有变化需要修改父类,那么所有的子类都会受到影响,而修改接口对子类影响不大,也不用修改子类的代码。

6.WinForm里面获取不到按键事件

重载这个‘protected override bool ProcessCmdKey(ref Message msg, Keys keyData)’就可以了。

7.多线程

  • 创建多线程的方式

    Thread,ThreadPool,Parallel,Task。.net4.0之前只能使用Thread和ThreadPool,Parallel和Task是对它们的抽象。
    1) Thread:比较灵活,允许创建前台线程,可以设置优先级。
    2) ThreadPool:线程池,可以动态调节池里面线程的个数,最多有1023个工作线程,1000个IO线程。
    3) Parallel:支持数据(并行的for和foreach)和任务并行(Parallel.Invoke(fun1,fun2))。
    4) Task:任务,可以传参并返回结果,可以创建子任务,取消父任务,子任务也会跟着取消。

  • 多线程同步

    1) Lock: 锁对象,在被锁范围内的代码无法被其他线程访问。被编译器解释为Monitor。
    2) Interlocked: 使变量的简单句子原子化,例如改变一个整型的值。
    3) Monitor: 锁定一个范围,可以设置超时值。
    4) SpinLock: struct,类似Monitor,但开销更小。
    5) WaitHandle: 等待信号,解除锁定。
    6) Mutex: 互斥量,适合跨进程访问。
    7) Semaphone: 信号量。
    8) Events: 事件,结束时会发信号。
    9) Barrier: 任务合并。
    10) ReaderWriterLockSlim: 只有一个写入器能获得锁,可以有多个读取器同时进行读取。

8.反射生成DLL实例失败

检查DLL针对的机器位数。

9.C#打开dbf文件失败

报错:ERROR [IM001] [Microsoft][ODBC 驱动程序管理器] 驱动程序不支持此功能。
解决:将【C:\Windows\SysWOW64】路径下的vfpodbc.dll替换为高版本的(比如6.0)。

10.试图加载格式不正确的程序(DLL)

检查程序CUP位数(32位、64位)。

11.C#反序列化失败

报错:无法找到成员*
可能原因:是否删掉了相关类的属性、或者事件(匿名委托)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值