我正在尝试创建一个将使用共享变量的线程(在主会话和线程之间)以及让线程能够使用主代码中的外部函数
我设法传递了要使用的线程的函数,并且我设法传递了只读变量。我的问题是,如果我在线程中更改变量的值,然后我尝试从主会话中读取它 - 我看不到值的变化,因此它不共享。
我该怎么做?我的目标是最终有一个线程。
这是我的代码:
private static String extractTag(String s) {
String[] parts = s.split(" - ");
if (parts.length > 1) {
return s[0];
}
throw new IllegalArgumentException("Could not extract tag from '" + s + "'");
}
答案 0 :(得分:1)
同步哈希表将满足您的需求:
# Sync'd hash table is accessible between threads
$hash = [HashTable]::Synchronized(@{})
$hash.Parameter = "Value"
有几种方法可以将它传递给新主题,我更喜欢简单的方法:
[PowerShell]$powershell = [PowerShell]::Create()
$powershell.AddScript({
Param
(
$hash
)
# do stuff
}).AddParameter("hash", $hash)
$powershell.BeginInvoke()
您从任一线程对哈希表所做的任何操作都将对两个线程(以及您传递给它的任何其他线程)都是可访问的。