类实例的GarbageCollection

时间:2019-06-26 16:17:35

标签: c# out-of-memory

我有一个Windows服务,该服务轮询一个文件,然后实例化一个类而不引用它。此类的实例将请求发送到外部WebService,接收答案并将其写入文件。或者,在某些情况下,它不会写入文件,而是实例化没有引用的另一个类,该类包含一个计时器。然后,此实例重复检查另一个WebService,直到收到答案或超时为止。然后将此答案写入文件。

问题是我的服务器内存不足(惊奇)。我认为在没有参考的情况下实例化新类将使它们有资格在 GC 完成工作后使用,但我可能会误解。随附的是伪代码,以演示工作流程。这种方法可以吗?还是完全不可以?

目前,我使用FileSystemWatcher在WinService中查找文件。这使用事件来通知有关新文件。可能有问题吗? 使用计时器的方法会更好吗?

//Windows Service 
  while (polling for file) //FileSystemWatcher or Timer-polling 
  { if (filefound) 
     new Work(file) //instantiates class-no reference 
  }

class Work(fileinfo) 
{
    answer1=Request to WebService1(fileinfo)
        if (answer1 is so)
        {
          WriteFile(answer)
        } 
        else
        {
          new Check(answer1)
        }
        Dispose(this)
}

class Check(answerinfo)
{
  start Timer on TimerTick
  {
    answer2=Request to WebService2(answerinfo)
    if (answer2 is received)
    {
      WriteFile(answer2)
      Stop Timer
      Dispose(this)
    }
    if (timeout)
    {
      Stop Timer 
      Dispose(this)
    }
  }
}

0 个答案:

没有答案