如果在多个线程上调用该方法,是否可以覆盖在静态方法中实例化的对象?

时间:2010-06-28 13:52:04

标签: c# static instance-variables thread-safety

如果基于提供给静态方法的参数在静态方法中检索实例变量,如果不同的调用者在完全相同的时间调用静态方法,是否可以使用实例变量? 我调用的方法定义如下,我想知道实例变量发票是否可以被破坏...任何澄清将非常感谢!

public static void SendInvoiceReceipt(int invoiceId, string recipientEmailAddress)
{
    var invoice = ObjectFactory.GetInvoiceDAL().GetInvoiceByInvoiceId(invoiceId);

    var htmlBody = BuildHtmlInvoiceReceipt(invoice);
    var txtBody = BuildTextInvoiceReceipt(invoice);

    UtilitiesManager.Emails.EmailUtil.Send(SiteConfigUtilities.GetSMTPServer(),
            "referral@realtors.net", recipientEmailAddress, String.Empty,
            "Payment Receipt", htmlBody, txtBody);
}

1 个答案:

答案 0 :(得分:6)

invoice是一个局部变量(不是“实例变量”)。它在堆栈上分配,每个线程都有自己的堆栈。另一个线程无法影响它。