上一篇中.Net 编译器平台 --- Roslyn,介绍了Roslyn的各项功能,包括公开API,使用语法,使用语义,使用工作区等功能。
那么回到上一篇中提到的问题,实现类似这样的功能(以下代码为伪代码):
csharpstring scriptText = "int a = 1;int b = 2; return a+b ;";
var result = Script.Run(scriptText);
就用到了上一篇提到的 Scripting APIs,还是先了解一下Roslyn提供的 Scripting APIs 有哪些。
最近做一个功能想要动态执行C#脚本,就是预先写好代码片段,在程序运行时去执行代码段,比如像这样(以下代码为伪代码):
csharpstring scriptText = "int a = 1;int b = 2; return a+b ;";
var result = Script.Run(scriptText);
查阅了一些资料,发现 .Net的开源编译器平台 - Roslyn,可以支持这样的功能。
上文编码技巧 --- 同步锁对象的选定中,提到了在C#中,让线程同步有两种方式:
加锁是最常用的线程同步的方法,就不再讨论,本篇主要讨论使用信号量同步线程。
在C#中,让线程同步有两种方式:
线程锁的原理,就是锁住一个资源,使得应用程序在此刻只有一个线程访问该资源。通俗地讲,就是让多线程变成单线程。在C#中,可以将被锁定的资源理解成 new
出来的普通CLR对象。