A question about making a C# class persistent during a file load
<p>Apologies for the indescriptive title, however it's the best I could think of for the moment.</p>

<p>Basically, I've written a singleton class that loads files into a database.  These files are typically large, and take hours to process.  What I am looking for is to make a method where I can have this class running, and be able to call methods from within it, even if it's calling class is shut down.</p>

<p>The singleton class is simple.  It starts a thread that loads the file into the database, while having methods to report on the current status.  In a nutshell it's al little like this:</p>

<pre><code>public sealed class BulkFileLoader {
  static BulkFileLoader instance = null;
  int currentCount = 0;

  BulkFileLoader()

  public static BulkFileLoader Instance
  {
    // Instanciate the instance class if necessary, and return it
  }

  public void Go() {
    // kick of 'ProcessFile' thread
  }


  public void GetCurrentCount() {
    return currentCount;
  }

  private void ProcessFile() {
    while (more rows in the import file) {
      // insert the row into the database
      currentCount++;
    }
  }
}
</code></pre>

<p>The idea is that you can get an instance of BulkFileLoader to execute, which will process a file to load, while at any time you can get realtime updates on the number of rows its done so far using the GetCurrentCount() method.</p>

<p>This works fine, except the calling class needs to stay open the whole time for the processing to continue.  As soon as I stop the calling class, the BulkFileLoader instance is removed, and it stops processing the file.  What I am after is a solution where it will continue to run independently, regardless of what happens to the calling class.</p>

<p>I then tried another approach.  I created a simple console application that kicks off the BulkFileLoader, and then wrapped it around as a process.  This fixes one problem, since now when I kick off the process, the file will continue to load even if I close the class that called the process.  However, now the problem I have is that cannot get updates on the current count, since if I try and get the instance of BulkFileLoader (which, as mentioned before is a singleton), it creates a <strong>new</strong> instance, rather than returning the instance that is currently in the executing process.  It would appear that singletons don't extend into the scope of other processes running on the machine.</p>

<p>In the end, I want to be able to kick off the BulkFileLoader, and at any time be able to find out how many rows it's processed.  However, that is even if I close the application I used to start it.</p>

<p>Can anyone see a solution to my problem?</p>
