线程安全公共字符串

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时,我不认为这是安全的.

pay*_*ayo 5

从您的评论到您的原始帖子,我认为您想要的是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)

在每个线程中,这里的字符串将被共享,并且只有第一个线程会加载它.