title: Dictionary<string, string> defined at Global.asax with Application.Add
body: <p>I have below code at my ASP.NET 4.0 web application's Global.asax</p>
  
  <pre><code>protected void Application_Start(object sender, EventArgs e)
  {
    Dictionary&lt;string, string&gt; AllCompanyList = new Dictionary&lt;string, string&gt;();
    Application.Add("GlobalCompanyList", AllCompanyList);
  
    Thread ProcessCompanyThread = new Thread(new ParameterizedThreadStart(CompanyThread.Start));
    ProcessCompanyThread.IsBackground = true;
    ProcessCompanyThread.Start(AllCompanyList);
  }
  </code></pre>
  
  <p>I access it on another page by</p>
  
  <pre><code>Dictionary&lt;string, string&gt; AllCompanyList = (Dictionary&lt;string, string&gt;)HttpContext.Current.Application["GlobalCompanyList"];
  </code></pre>
  
  <ol>
  <li><p>First of all, is "GlobalCompanyList"
  only has one instance in IIS's
  lifetime?</p></li>
  <li><p>Second, is "GlobalCompanyList"
  thread safe to be access or modify
  in ProcessCompanyThread? If it is
  not then what must i do to make it
  thread safe?</p></li>
  </ol>
  
  <p>Thanks for help.</p>