[英]Custom events in C# specifically is the sender object thread safe
好的,所以我正在实现一组自定义事件。 首先,它们将与多线程环境一起使用,以在整个线程中传达主要成就。 现在,我现在有一个简单的设置:
public delegate void TestEventHandler(object sender, TestEventArgs e);
public class Test
{
bool _stopTesting = false;
int _runs = 0;
public event TestEventHandler Tester;
protected virtual void OnTest(TestEventArgs e)
{
TestEventHandler hand = Tester;
if (hand != null)
hand(this, e);
}
public void StartTest()
{
while (!_stopTesting)
{
_runs++;
TestEventArgs e = new TestEventArgs(true, 100000);
OnTest(e);
}
}
}
public class TestMe
{
public void TestMeHard(object sender, TestEventArgs e)
{
Test check = sender as Test;
Console.WriteLine(e.Message);
}
}
事件args类在其他地方定义。 我的问题是, sender
对象线程是否安全,并且原谅这个笨拙的问题,但是sender
对象是引用还是副本? 就像在触发事件的实际对象中一样,对发送方对象的任何更改都将被反映出来吗?
发件人对象是参考,而不是副本。
现在到线程安全问题,它取决于在sender参数中传递的对象。 由于发送方对象是一般类型的,因此需要将其转换为适当的类型才能使用它。 它可以表示任何对象,很难说它是否安全。
通过这篇文章了解如何编写线程安全类
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.