PDA

View Full Version : سوال: كپي كردن فايلها از يك درايو مپ شده در شبكه



kienshien
دوشنبه 08 آبان 1391, 10:04 صبح
سلام به دوستان برنامه نويس.
يك جايي گير كردم شديد ، اگر كمكم كنيد واقعا ممنون ميشم ، مسئله اين هست كه قرار من كدي با سي شارپ بنويسم تا يك سري فايل از يك درايو مپ شده در شبكه كپي بشه روي كلاينت. من اين كها رو زدم ، ولي هيچ فايلي كپي نميشود البته كار كپي را به يك Background Worker سپردم ، جالب اينجاست فرم من نمايش داده نمي شود ، چيكار كنم ، خيلي قضيه حياتيست . كممممممممممممممك :گیج:

public partial class frmUpdate : Form
{
private string sdir = string.Empty;
public frmUpdate(bool x = false)
{
InitializeComponent();
}

private void frmUpdate_Shown(object sender, EventArgs e)
{


}

public void Progbar(List<String> lstFile)
{
CopyFiles.CopyFiles Temp = new CopyFiles.CopyFiles(lstFile, /*Application.StartupPath*/"E:\\test" + @"\");

CopyFiles.DIA_CopyFiles TempDiag = new CopyFiles.DIA_CopyFiles();
TempDiag.SynchronizationObject = this;

//Copy the files anysncrinsuly
Temp.CopyAsync(TempDiag);

//Uncomment this line to do a synchronous copy.
//Temp.Copy();
}

private void frmUpdate_Load(object sender, EventArgs e)
{
List<String> lstFile = new List<string>();
//Application.EnableVisualStyles();
//Application.SetCompatibleTextRenderingDefault(fals e);
//Application.Run(new Form1());
MapDrive newMap = new MapDrive();

try
{
/**************** Map A Drive For Update *******************/

string Driver_Name = string.Empty;

//newMap.Map(0,ref Driver_Name);
CopyFiles.Global.newMapDrive.Map(0, ref Driver_Name);
Thread.Sleep(2000);

/************************************************** *********/
string myFileVersionInfo = FileVersionInfo.GetVersionInfo(Application.Startup Path + "\\Customers.exe").FileVersion;
string updatedVersion = FileVersionInfo.GetVersionInfo(Driver_Name + "\\Customers.exe").FileVersion;

if (myFileVersionInfo != updatedVersion)
{
String sourceDir = Driver_Name + "\\";
sdir = sourceDir;
backgroundWorker1.RunWorkerAsync();
//Progbar(Directory.GetFiles(sourceDir, "*.*").Where(x => x.ToString() != "SalesManagement.exe").ToList());
}


}
catch (Exception ex)
{
throw new Exception(ex.Message);
}

finally
{


}
}

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
try
{

foreach (var file in Directory.GetFiles(sdir).Where(x => x.ToString() != "SalesManagement.exe"))
{
File.Copy(file, Path.Combine(Application.StartupPath+"\\", Path.GetFileName(file)), true);
}
}
catch (Exception exp)
{
MessageBox.Show(exp.Message);
backgroundWorker1.CancelAsync();

}
}

private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (!backgroundWorker1.CancellationPending)
{
MessageBox.Show("بروز رساني انجام شد");
Process.Start("Customers.exe");
CopyFiles.Global.newMapDrive.UnMap();
this.Close();
}
else
{
CopyFiles.Global.newMapDrive.UnMap();
this.Close();
}
}

}

morteza271
دوشنبه 08 آبان 1391, 10:22 صبح
چک کنید ببینید متغیر sdir درست مقداردهی شده و به آدرس درستی اشاره میکنه یا نه!!!
اینجور مواقع بهترین روش برای پیدا کردن مشکل برنامه اینه که برنامه رو تریس کنید.

FastCode
دوشنبه 08 آبان 1391, 10:30 صبح
Backgroundworker را start کردید؟

morteza271
دوشنبه 08 آبان 1391, 10:50 صبح
Backgroundworker را start کردید؟

این کار رو کردن
backgroundWorker1.RunWorkerAsync();

ولی باید چک کنند ببینند حتما این کد اجرا میشه یا نه چراکه داخل یک if قرار داره!!