4 .net c# ado.net multithreading
我有一个从DataTable中的数据设置的公共字符串,我正在寻找一个如何使其多线程安全的例子
public string Server { get; set; }
string Server = DT.Rows[0].ItemArray[0].ToString();
Run Code Online (Sandbox Code Playgroud)
这就是我所拥有的,当所有其他线程根据数据表中的数据设置其字符串Server时,我不认为这是安全的.
从您的评论到您的原始帖子,我认为您想要的是ThreadLocal
你会得到:
// declared as:
ThreadLocal<string> Server;
// ... initialized by:
Server = new ThreadLocal(() => DT.Rows[0].ItemArray[0].ToString());
Run Code Online (Sandbox Code Playgroud)
在每个线程中,此处的字符串对于该线程是唯一的.
如果您希望第一个线程获胜(延迟加载模型),请使用以下Lazy
// declared as:
Lazy<string> Server;
// ... initialized by:
Server = new Lazy(() => DT.Rows[0].ItemArray[0].ToString());
Run Code Online (Sandbox Code Playgroud)
在每个线程中,这里的字符串将被共享,并且只有第一个线程会加载它.
| 归档时间: |
|
| 查看次数: |
665 次 |
| 最近记录: |