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

ner*_*rdn 0 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);
}
Run Code Online (Sandbox Code Playgroud)

Joh*_*ers 6

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