Пример #1
0
        private void StartNewThreadInner()
        {
            try
            {
                current_delegate_();

                // 非同期処理終了(エラー:NO、中止:NO)
                if (current_completed_delegate != null)
                {
                    AsyncCompletedEventArgs arg = new AsyncCompletedEventArgs(null, false, null);
                    current_completed_delegate(arg);
                }
            }
            catch (System.Threading.ThreadAbortException e)
            {
                // 非同期処理終了(エラー:YES、中止:YES)
                if (current_completed_delegate != null)
                {
                    AsyncCompletedEventArgs arg = new AsyncCompletedEventArgs(e, true, null);
                    current_completed_delegate(arg);
                }
                msg_receiver_.Write("処理は中止されました。ファイルの処理中に中止された場合はファイルが壊れている可能性があります。\r\n");
            }
            catch (MyCancelException)
            {
                // 非同期処理終了(エラー:NO、中止:YES)
                if (current_completed_delegate != null)
                {
                    AsyncCompletedEventArgs arg = new AsyncCompletedEventArgs(null, true, null);
                    current_completed_delegate(arg);
                }
            }
            catch (Exception e)
            {
                // 非同期処理終了(エラー:YES、中止:NO)
                if (current_completed_delegate != null)
                {
                    AsyncCompletedEventArgs arg = new AsyncCompletedEventArgs(e, false, null);
                    current_completed_delegate(arg);
                }
                Error(e);
            }
            finally
            {
                is_running_ = false;
                if (cancel_object_.IsCanceling())
                {
                    msg_receiver_.Write("処理はキャンセルされました。\r\n");
                    cancel_object_.ClearCanceling();
                }
            }
        }