private void TargetIf_AppProgressEvent(ProgressArgs arg)
        {
            int idx = _listItems.FindIndex(x => x.Id == arg.ImageID && (int)x.Protocol == arg.ExtraInfo);

            if (idx >= 0 && arg.TotalBytes > 0) // 유효한 파일 다운로드 중..
            {
                int progress = (int)(arg.SentBytes * 100 / arg.TotalBytes);

                UpdateProgress(idx, progress);
            }
            else if (arg.ExtraInfo == (int)QProtocol.All)
            {
                if (_targetIf != null)
                {
                    _targetIf.AppProgressEvent -= TargetIf_AppProgressEvent;
                }

                if (FbMode == FBMode.Download && arg.TotalBytes > 0)
                {
                    Main.PrintImagesList(_listItems);
                }

                Log.i("All {0} is Completed.", FbMode == FBMode.Download ? "Download" : "Dump");
                this.TotalStatus = string.Format("{0} is completed {1}.",
                                                 FbMode == FBMode.Download ? "<download>" : "<dump>",
                                                 arg.TotalBytes > 0 ? "successfully" : "but failed");

                FbMode = FBMode.None;
                bool ok = arg.TotalBytes > 0;
                Pages.TopMessageBox.ShowMsg(
                    string.Format("A task is completed.\n\n<Result>\n\t{0}", ok ? "Success" : "Fail - refer logs"), ok);

                this.UIThread(delegate
                {
                    DownloadCommand.RaiseCanExecuteChanged();
                    DumpCommand.RaiseCanExecuteChanged();
                });
            }
        }