Exemplo n.º 1
0
        public void ChangeItem(object objDr)
        {
            DataRow            dr     = (DataRow)objDr;
            string             fileId = dr["fileId"].ToString();
            ItemUploadFile     item   = (ItemUploadFile)dr["item"];
            UploadFileDelegate ufd    = UploadFile;

            ufd.BeginInvoke(dr, this.Complete, dr);
            while (true)
            {
                if (dr != null && dr.RowState != DataRowState.Detached && dr.RowState != DataRowState.Deleted)
                {
                    long fileSize    = 0;
                    long currentSize = 0;
                    try
                    {
                        fileSize    = Convert.ToInt64(dr["FileSize"]);
                        currentSize = Convert.ToInt64(dr["UploadSize"]);
                    }
                    catch (Exception ex)
                    {
                        Thread.Sleep(50);
                        fileSize    = Convert.ToInt64(dr["FileSize"]);
                        currentSize = Convert.ToInt64(dr["UploadSize"]);
                    }

                    int value = (int)((currentSize * 100) / fileSize);
                    item.Invoke(new Action(() =>
                    {
                        item.value = value;
                        item.Invalidate();
                        //item.Invalidate();
                    }));
                    if (value >= 100)
                    {
                        this.sendMessage.Invoke(item.File);
                        RemoveItem.Invoke(item.File);
                        this.addFileMessage(item.File);
                        lock (dtMission)
                        {
                            dtMission.Rows.Remove(dr);
                        }
                        break;
                    }
                }
                else
                {
                    break;
                }
                Thread.Sleep(500);
            }
        }