示例#1
0
 private void mDeleteMenuItem_Click(object sender, EventArgs e)
 {
     if (MessageBox.Show("确定要删除这些项目吗?", "确认", MessageBoxButtons.OKCancel) == DialogResult.OK)
     {
         DeleteContentsReq req = new DeleteContentsReq();
         req.ContentPaths = new List <string>();
         foreach (ListViewItem item in mContentList.SelectedItems)
         {
             string contentPath = Path.Combine(mCurrentDirectory, item.Text);
             req.ContentPaths.Add(contentPath);
         }
         mClient.SendRequest(ProtocolTypes.TYPE_DELETE_CONTENTS, req);
     }
 }
        public override void ProcessRequest()
        {
            DeleteContentsReq req = mSocketTalker.ReceiveObject <DeleteContentsReq>();
            DeleteContentsRes res = new DeleteContentsRes();

            res.DeleteResults = new string[req.ContentPaths.Count];
            for (int i = 0; i < req.ContentPaths.Count; i++)
            {
                Content content = new Content(req.ContentPaths[i]);
                try
                {
                    switch (content.Type)
                    {
                    case Content.TYPE_NOT_FOUND:
                        throw new KnownException("此路径所代表的不是一个文件或目录。");

                    case Content.TYPE_FILE:
                        File.Delete(content.Path);
                        break;

                    case Content.TYPE_DRIVER:
                        throw new KnownException("此路径所代表的是一个驱动器。");

                    case Content.TYPE_DIRECTORY:
                        Directory.Delete(content.Path, true);
                        break;
                    }
                }
                catch (Exception e)
                {
                    res.ErorrOccured     = true;
                    res.DeleteResults[i] = content.Path + " " + e.Message;
                }
            }

            mSocketTalker.SendInt(ProtocolTypes.TYPE_DELETE_CONTENTS);
            mSocketTalker.SendObject(res);
        }