Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
01/16/13 11:13:18 (11 years ago)
Author:
ascheibe
Message:

#2005

  • renamed some events and methods
  • fixed some memory leaks
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/UnloadJobs/HeuristicLab.Clients.Hive/3.3/ConcurrentTaskDownloader.cs

    r7259 r9169  
    3030  /// Downloads and deserializes jobs. It avoids too many jobs beeing downloaded or deserialized at the same time to avoid memory problems
    3131  /// </summary>
    32   public class ConcurrentTaskDownloader<T> where T : class, ITask {
     32  public class ConcurrentTaskDownloader<T> : IDisposable where T : class, ITask {
    3333    private bool abort = false;
    3434    // use semaphore to ensure only few concurrenct connections and few SerializedJob objects in memory
     
    8282        if (abort) return null;
    8383        result = HiveServiceLocator.Instance.CallHiveService(s => s.GetTaskData(task.Id));
    84       } finally {
     84      }
     85      finally {
    8586        downloadSemaphore.Release();
    8687      }
     
    9596        taskData.Item2.Data = null; // reduce memory consumption.
    9697        return new Tuple<Task, T>(taskData.Item1, deserializedJob);
    97       } finally {
     98      }
     99      finally {
    98100        deserializeSemaphore.Release();
    99101      }
     
    110112      if (handler != null) handler(this, new EventArgs<Exception>(exception));
    111113    }
     114
     115    #region IDisposable Members
     116    public void Dispose() {
     117      TaskScheduler.UnobservedTaskException -= new EventHandler<UnobservedTaskExceptionEventArgs>(TaskScheduler_UnobservedTaskException);
     118      deserializeSemaphore.Dispose();
     119      downloadSemaphore.Dispose();
     120    }
     121    #endregion
    112122  }
    113123}
Note: See TracChangeset for help on using the changeset viewer.