我有一个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)
}
}
}