一个相当简单的问题(我认为),但我似乎还没有看到答案。我知道有些值是通过值传递的(如 int 和 long),而其他值是通过引用传递的(如字符串),当您将它们传递给函数时。
在我的程序中,我使用后台工作程序,这样当我们在后台进行长时间的处理时,GUI 就不会锁定。我需要将数据从另一个文件传回 UI 线程,所以我一直在使用事件。现在我需要将字符串数组列表发送回 GUI 线程以在那里处理,我担心它会如何处理。基本上,在工作线程中,我有一个循环来填充列表,通过事件处理程序将其发送回 GUI,然后清除它,以便它可以在下一次通过循环时填充它并重新开始。
我担心当我这样做时,如果列表是通过引用传递的,那么在 UI 线程上,我会认为它会在读取中被清除,因为工作线程仍会在后台清除它。在这种情况下,通过会更好,我可以找到强制它的方法(复制到某个持有者数组或添加互斥锁或类似的东西),但我认为最好知道事件参数是否通过一般的引用或值,还是只是与方法相同,它会将它们作为通常传递的参数传递?