I am not to familiar with C# but i know how garbage collect works in other languages.
Would it be possible to use garbage collect instead of forcing a restart?
here is a link to garbage collect for C#
http://www.developer.com/net/csharp/article.php/3343191