如何在另一个类中调用公共类的方法?

时间:2014-05-14 09:23:34

标签: c# multithreading locking method-call

我有一个公共课A,其中包含多种方法。

我还有两个类,我在其中创建了类A的对象来调用它的方法MethodA()

现在它表现得非常奇怪:当我从其他两个类调用MethodA()时,它会向两个类返回相同的值,尽管输入与这些类不同。

请注意我的应用程序处于多线程环境中。

我的代码的一些例子如下:

namespace Project1
{
   public Class A : SourceClass
    {
        public string MethodA(string input)
        {
        //it performs a logic and returns string variable
        string str1 = input;
        string str2 = "Hello";
        string str3 = "";
        if(str1.Compare(str2) == 0)
        {
            str3 = "Same";
        }
        else
        {
            str3 = "Different";
        }
        return str3;
    }

    public Class B : SourceClass
    {
        A objA = new A();
        string input1 = "Hello";
        string str1 = objA.MethodA(input1);
        MessageBox.Show(str1 + "from Class B");
    }

    public Class C : SourceClass
    {
        A objA = new A();  
        string input1 = "Hi";
        string str1 = objA.MethodA(input1);
        MessageBox.Show(str1 + "from Class C");
    }
}

现在,当我运行我的应用程序时,我从类B得到相同的输出,并从类C获得相同的输出,而我应该从类C获得不同。

由于它是一个多线程环境,我认为我缺少锁定一个对象。请指导我哪里出错了。

1 个答案:

答案 0 :(得分:0)

你应该改变

if(str1.Compare(str2))

作为

if(str1.Compare(str2)==0)

根据输入,比较返回负,零或正。