C#:在2个不同的线程中共享局部变量

埃拉赫

看下面的示例代码:

private void StartProgram()
{
    for (int i = 0; i < 10; i++)
    {
        if (true) // some conditions
        {
            int Temp = i; // every thread has different memory location for Temp variable.
            Thread ConnectThread = new Thread(ThreadMethod);
            ConnectThread.Start(Temp);
         }
    }
}

private static void ThreadMethod(object Index)
{
    int ID = (int)Index;
    int Result = 0;
    bool IsConnected;


    Result = ClientSMPP[ID].tcpConnect(Host[ID], int.Parse(Port[ID]));

    InsertToDatabaseMethod();
}

据我所知,Temp变量在每个线程的内存中都有不同的位置。我的意思是每个线程都有一个单独的字段。但是当我想在ThreadMethod中执行某些操作时,ID字段将发生冲突。我的意思是,每次ThreadMethod运行时,它都没有唯一的值(例如,ID的值是3的“ 1”)。我知道ThreadMethod中可能有1个以上的线程,但是它们具有不同的内存。我不想使用Lock()。

我该如何忽略这种冲突?

金鱼222

根据您的请求,将此响应移至“答案”。很高兴我能帮上忙!:)

您正在调用InsertToDatabaseMethod()而不传递值。

如果要插入的值来自外部来源(例如:属性),那么可以,要使用锁。

如果值是本地的(例如:您在数据库中插入“ ID”,则可以将值作为参数传递以避免锁定:InsertToDatabaseMethod(ID)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C#使用未分配的局部变量(2个不同的循环,int)

来自分类Dev

我可以对C#中的两个不同事件使用相同的局部变量吗?

来自分类Dev

我可以对C#中的两个不同事件使用相同的局部变量吗?

来自分类Dev

C#返回局部变量

来自分类Dev

在C#中模拟局部变量

来自分类Dev

Java中的线程局部变量与局部变量

来自分类Dev

通过引用将局部变量传递给C ++线程

来自分类Dev

在Windows Phone 8.1 C#中共享两个不同的东西

来自分类Dev

在Windows Phone 8.1 C#中共享两个不同的东西

来自分类Dev

C#编译器抱怨在没有局部变量之前滥用局部变量

来自分类Dev

如何使用ASP.NET MVC 4在C#中将2个局部变量合并为1个全局变量

来自分类Dev

如何使用ASP.NET MVC 4在C#中将2个局部变量合并为1个全局变量

来自分类Dev

C#使用未分配的局部变量c

来自分类Dev

静态局部变量的线程安全增量

来自分类Dev

在Clojure中线程局部变量

来自分类Dev

局部变量是线程安全的吗?

来自分类Dev

Java局部变量线程安全

来自分类Dev

C#使用未分配的局部变量列表

来自分类Dev

使用未分配的局部变量c#

来自分类Dev

C#使用未分配的局部变量

来自分类Dev

C#使用未分配的局部变量异常

来自分类Dev

Selenium c# 循环遍历局部变量

来自分类Dev

局部变量统一 c# 上的空引用

来自分类Dev

传递的局部变量(C ++)

来自分类Dev

C处理局部变量

来自分类Dev

引用局部变量的C ++

来自分类Dev

C++ 局部变量

来自分类Dev

父局部变量充当三个孩子之间的共享变量

来自分类Dev

不同的线程是否看到局部变量引用的对象的相同版本?