表示在 Thread 上执行的方法的委托方法,ThreadStart不能带参数,ParameterizedThreadStart是2.0中新增的,可以带参数(object类型的)
如果你想为一个线程传入变量你怎么办?
ThreadStart可不支持带参数的方法.所以你无法使用Thread来启动一个带参数的方法..
复制 保存
ThreadStart myThreadDelegate = new ThreadStart(ThreadMethod);
//public delegate void ThreadStart(); u can't pass a Parameter
Thread myThread = new Thread(myThreadDelegate);
myThread.Start(); //myThread.Start(o); Wrong!
不过在.Net1.0下,你可以通过Delegate的异步调用来实现
http://www.cnblogs.com/idior/articles/100666.html
现在在.Net2.0下提供了ParameterizedThreadStart 这么一个Delegate.它和ThreadStart 的不 同就在于可以拥有一个object类型的参数.也就是说你可以通过它来使用Thread类以启动一个线程并传入参数, 和Java很象了,不错的新功能.
复制 保存
using System;
using System.Threading;
namespace ParameterizedThreadStartTest
{
class Program
{
static void Main(string[] args)
{
ParameterizedThreadStart myParameterizedThreadDelegate = new ParameterizedThreadStart(ThreadMethod);
Thread myThread = new Thread(myParameterizedThreadDelegate);
object o = "hello";
myThread.Start(o);
}
******* static void ThreadMethod(object o)
{
string str = o as string;
Console.WriteLine(str);
}
}
}
还有一个新增的类BackgroundWorker,可以用于启动后台线程,并在后台计算结束后及时调用主线程的方法.一个常见的应用就是在 DataGrid中载入数据的时候.因为从数据库中载入DataSet比较耗时, 所以你可以使用BackgroundWorker来进行载入, 当 DataSet构造好后就立即绑定上DataGrid. 其实该功能同样可以通过Delegate的异步调用实现不过BackgroundWorker用 起来更方便一些.
复制 保存
//1. Instantiate a BackgroundWorker instance:
BackgroundWorker myDataWorker = new BackgroundWorker();
//2. Setup a DoWork delegate that does the work that you want to be done on the background thread.
myDataWorker.DoWork += new DoWorkEventHandler(delegate(object o, DoWorkEventArgs workerEventArgs)
{
workerEventArgs.Result = new XXXDAL().GetData();
}
);
//3. Setup a RunWorkerCompleted delegate that handles updating your UI with the da
myDataWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(delegate(object o, RunWorkerCompletedEventArgs workerEventArgs)
{
DataSet da
this.dataGrid.DataSource = da
}
);
//4.Run your worker by calling the RunWorkerAsync() method on your BackgroundWorker instance.
myDataWorker.RunWorkerAsync();
在Winform界面使用自定义用户控件及TabelPanel和StackPanel布局控件
C++迟后联编和虚函数表
PaX介绍——针对linux kernel的一个加固版本的补丁,是这个星球上有史以来最极端和最优秀的防御系统级别0day的方案
侧信道攻击——基于从密码系统的物理实现中获取的信息而非暴力破解法或是算法中的理论性弱点(较之密码分析)。例如:时间信息、功率消耗、电磁泄露或甚是声音可以提供额外的信息来源作为破解输入
默克尔树(merkle tree)——就是hash树,比特币区块链里用于校验完整性的
spark RDD pipe 调用外部脚本
AIDE(高级入侵检测环境)——就是讲文件的hash值存到db中,然后比较是否被篡改过
完整性度量架构(IMA)介绍与分析——当应用程序运行、动态链接库加载、内核模块加载时,将用到的代码和关键数据(如配置文件和结构化数据)做一次hash比较的感觉
AES中的ECB、CTR、MAC、GMAC、GCM