public void GetUpdateGMISetting(string IPList, ObservableCollection <GetGMUPosDetailsResult> result, Func <GetGMUPosDetailsResult, bool> doWork, Action afterWork) { try { SynchronizationContext ctx = SynchronizationContext.Current; InnerWork work = new InnerWork() { Context = ctx, DoWork = doWork, AfterWork = afterWork }; new Thread(new ParameterizedThreadStart((o) => { InnerWork innerWork = (InnerWork)o; try { ISingleResult <GetGMUPosDetailsResult> collection = dbAccess.GetGMUPosDetails(IPList); if (collection != null) { foreach (var item in collection) { try { if (innerWork.DoWork(item)) { innerWork.Context.Send((c) => { result.Add((GetGMUPosDetailsResult)item); }, null); } Thread.Sleep(100); } catch (Exception ex) { ExceptionManager.Publish(ex); } } } } catch (Exception ex) { ExceptionManager.Publish(ex); } finally { if (innerWork.AfterWork != null) { innerWork.Context.Send((c) => { innerWork.AfterWork(); }, null); } } } )).Start(work); } catch (Exception ex) { throw ex; } }
public void GetUpdateGMISetting(string IPList, ObservableCollection<GetGMUPosDetailsResult> result, Func<GetGMUPosDetailsResult, bool> doWork, Action afterWork) { try { SynchronizationContext ctx = SynchronizationContext.Current; InnerWork work = new InnerWork() { Context = ctx, DoWork = doWork, AfterWork = afterWork }; new Thread(new ParameterizedThreadStart((o) => { InnerWork innerWork = (InnerWork)o; try { ISingleResult<GetGMUPosDetailsResult> collection = dbAccess.GetGMUPosDetails(IPList); if (collection != null) { foreach (var item in collection) { try { if (innerWork.DoWork(item)) { innerWork.Context.Send((c) => { result.Add((GetGMUPosDetailsResult)item); }, null); } Thread.Sleep(100); } catch (Exception ex) { ExceptionManager.Publish(ex); } } } } catch (Exception ex) { ExceptionManager.Publish(ex); } finally { if (innerWork.AfterWork != null) { innerWork.Context.Send((c) => { innerWork.AfterWork(); }, null); } } } )).Start(work); } catch (Exception ex) { throw ex; } }