controller: dispose the fetcher when we're done so it can be garbage collected

This commit is contained in:
Hylke Bons 2011-05-08 20:35:26 +01:00
parent 825ea5b200
commit 26a99679a7
2 changed files with 14 additions and 2 deletions

View file

@ -35,6 +35,7 @@ namespace SparkleLib {
private string target_folder; private string target_folder;
private string remote_url; private string remote_url;
private Thread thread;
public SparkleFetcher (string remote_url, string target_folder) public SparkleFetcher (string remote_url, string target_folder)
@ -55,7 +56,7 @@ namespace SparkleLib {
if (Directory.Exists (this.target_folder)) if (Directory.Exists (this.target_folder))
Directory.Delete (this.target_folder, true); Directory.Delete (this.target_folder, true);
Thread thread = new Thread (new ThreadStart (delegate { this.thread = new Thread (new ThreadStart (delegate {
if (Fetch ()) { if (Fetch ()) {
SparkleHelpers.DebugInfo ("Fetcher", "[" + this.target_folder + "] Fetching finished"); SparkleHelpers.DebugInfo ("Fetcher", "[" + this.target_folder + "] Fetching finished");
@ -69,7 +70,14 @@ namespace SparkleLib {
} }
})); }));
thread.Start (); this.thread.Start ();
}
public void Dispose ()
{
this.thread.Abort ();
this.thread.Join ();
} }

View file

@ -1007,6 +1007,8 @@ namespace SparkleShare {
if (FolderListChanged != null) if (FolderListChanged != null)
FolderListChanged (); FolderListChanged ();
fetcher.Dispose ();
}; };
@ -1023,6 +1025,8 @@ namespace SparkleShare {
if (FolderFetchError != null) if (FolderFetchError != null)
FolderFetchError (); FolderFetchError ();
fetcher.Dispose ();
}; };