public void Fetch() { if (!_mutexFetch.WaitOne(0)) //try get mutex { //already a fetch in progress _mutexFetch.WaitOne(); //wait on finish _mutexFetch.ReleaseMutex(); return; } if (_providerData == null) { // InfoUrl = SjInfo.SearchSjDe(Name); ProviderData = ProviderManager.GetProvider().FindShow(Name); } try { IsLoading = true; String cover; var episodes = SjInfo.ParseSjOrgSite(_show, out cover, Settings.Instance.UploadCache); AllDownloads = episodes; if (cover != "") { Cover = cover; } _mutexFetch.ReleaseMutex(); if (_resetOnRefresh) { _resetOnRefresh = false; ApplyFilter(true); } else { ApplyFilter(false); } } finally { IsLoading = false; } }