Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 多线程环境中的线程安全方法_C#_Multithreading_Object_Thread Safety - Fatal编程技术网

C# 多线程环境中的线程安全方法

C# 多线程环境中的线程安全方法,c#,multithreading,object,thread-safety,C#,Multithreading,Object,Thread Safety,请让我知道下面的方法是否线程安全。请考虑此方法,称为边计时器。计时器< /COD> TIK事件(这是多线程环境)。 `如果Test.SendData和Test.sendMyInfo方法是线程安全的,那么您呈现的代码本身就是线程安全的。否则不行 如果Test.SendData和Test.sendMyInfo方法是线程安全的,那么您呈现的代码本身就是线程安全的。否则不行 您展示的代码都不会在不同的线程之间共享数据,因此您应该是好的,假设您未发布的相关代码中没有线程安全问题,其中包括Test()、Te

请让我知道下面的方法是否线程安全。请考虑此方法,称为边<代码>计时器。计时器< /COD> TIK事件(这是多线程环境)。
`

如果Test.SendData和Test.sendMyInfo方法是线程安全的,那么您呈现的代码本身就是线程安全的。否则不行

如果Test.SendData和Test.sendMyInfo方法是线程安全的,那么您呈现的代码本身就是线程安全的。否则不行

您展示的代码都不会在不同的线程之间共享数据,因此您应该是好的,假设您未发布的相关代码中没有线程安全问题,其中包括
Test()
Test.SendData
Test.sendMyInfo
的内容


另一方面,你也考虑了你发送数据的过程吗?如果您有两个线程同时发送数据,会导致问题吗?或者您的收件人会正确处理吗?

您提供的代码都不会在不同的线程之间共享数据,因此您应该很好,假设您未发布的相关代码中没有线程安全问题,其中包括
Test()
Test.SendData
Test.sendMyInfo
的内容



另一方面,你也考虑了你发送数据的过程吗?如果您有两个线程同时发送数据,会导致问题吗?或者您的收件人会正确处理吗?

线程安全有很多含义。看看,这里没有足够的信息,方法、属性和构造函数是什么样子的?请读一下。我纠正了一个错误。需要考虑的是代码< > GETMyField执行多长时间。如果持续花费的时间超过了计时器周期,那么您不仅有可能同时发生多个计时器计时(因此,多个线程),而且还有一个更大的问题,即创建新线程的速度比处理旧线程的速度要快。这最终会导致你的程序崩溃,或者机器被锁定,因为所有的线程切换都会导致程序崩溃。看看,这里没有足够的信息,方法、属性和构造函数是什么样子的?请读一下。我纠正了一个错误。需要考虑的是代码< > GETMyField执行多长时间。如果持续花费的时间超过了计时器周期,那么您不仅有可能同时发生多个计时器计时(因此,多个线程),而且还有一个更大的问题,即创建新线程的速度比处理旧线程的速度要快。这将最终导致您的程序崩溃,或者机器被锁定,因为它在所有线程切换中都处于颠簸状态。因为我正在方法中创建一个新对象,并通过该对象调用。我相信这是线程安全的。那可能不是真的。考虑前面提到的任何测试类方法使用的情况:来自静态变量的数据,调用来自非线程安全的另一类的任何方法,使用非托管系统资源等。因为我在该方法中创建了一个新对象,并通过该对象进行调用。我相信这是线程安全的。那可能不是真的。考虑前面提到的任何测试类方法使用的情况:来自静态变量的数据,调用来自非线程安全的另一类的任何方法,使用非托管系统资源等。如果GETMyInFor()由两个线程同时调用。对象引用将如何工作,因为我正在为两个线程创建“t”对象引用,并且一个名称中的一个对象将只有一个对象引用。每次执行
new Test()
时,它将创建一个新的对象引用。因此,内存中将有两个
t
对象,每个线程一个。但我的问题是,所有这些对象都将在堆上创建,因此相同的对象引用名称如何找到正确的对象,它引用相同的对象可以具有相同的命名对象引用,这是因为每个线程都有自己的堆栈是的,每个线程都有自己的堆栈,因此,每个线程都可以在堆上引用自己的
t
。对象引用将如何工作,因为我正在为两个线程创建“t”对象引用,并且一个名称中的一个对象将只有一个对象引用。每次执行
new Test()
时,它将创建一个新的对象引用。因此,内存中将有两个
t
对象,每个线程一个。但我的问题是,所有这些对象都将在堆上创建,因此相同的对象引用名称如何找到正确的对象,它引用相同的对象可以具有相同的命名对象引用,这是因为每个线程都有自己的堆栈是的,每个线程都有自己的堆栈,因此,每个人都可以在堆上引用自己的
t
public void GetMyInfo()
{

    Test t= new Test();
    string result= t.SendData();

    if (result != "0")
    {
        MyInfo _omy = new MyInfo();
        _omy.name="abc";
        _omy.age="23";
        t.sendMyInfo(_omy)
    }
}

class MyInfo
{
string name{get;set;}
string age {get;set}
}