I um 100 Remote-Server haben und unten, wie ich versuche, einige Dateien von meinem PC auf alle diese Remote-Server zu kopieren, aber ich möchte einige Kontrollen tunKopieren von Dateien auf Remote-Server überprüft
1- Check wenn die Verbindung zum Remote-Server verfügbar ist, wenn nicht geht dann zum nächsten Büro
2-für Benutzer-Interaktion
a- ich bei datagridview1
zu Farbe ausgewählte Zeile versuchen bei Whcih Büro zu informieren, Benutzer des Fortschritt ist jetzt und alos unter datagridview2
die gleiche Sache, um Benutzer wissen zu lassen, in welcher Datei der Fortschritt ist jetzt in bestimmten Büro, aber die Schnittstelle einfrieren nach dem Start der Datei zu senden und keine Interaktion passieren, was zu tun ist?
b-wie wird die fertige Bürozeile bei grün eingefärbt, wenn erfolgreich?
aktualisiert
I Form so das Feedback an Benutzer aber Problem wird nicht wieder gelöst und noch passieren und nichts ändern bitte, was soll ich tun Einfrieren lösen verwendet Threading ???
public void PatchUpdates()
{
try
{
foreach (DataGridViewRow OfficeListRow in DGV_OfficeList.Rows)
{
string OfficeIPAddress = OfficeListRow.Cells[2].Value.ToString();
foreach (DataGridViewRow FileListRow in DGV_FileList.Rows)
{
string SoruceFileNamePath = FileListRow.Cells[4].Value.ToString();
string DestinationFileNamePath = @"\\" + OfficeIPAddress + @"\usb1_1\test\" + Path.GetFileName(SoruceFileNamePath);
Thread foregroundthread = new Thread(() => CheckOffice(OfficeIPAddress));
foregroundthread.Start();
//check if connection to remote server is available
if (CheckOffice(OfficeIPAddress) == 1)
{
DGV_OfficeList[3, DGV_OfficeList.CurrentCell.RowIndex].Value = "Connected";
//file.copy(sorucefilenamepath, destinationfilenamepath, true); //copy files...
}
else if (CheckOffice(OfficeIPAddress) == 0)
{
DGV_OfficeList[3, DGV_OfficeList.CurrentCell.RowIndex].Value = "disconnected";
break;
}
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
Prüfung Verbindungsmethode
public int CheckOffice(string _ipAddress)
{
int timeout = 120;
string data = "PingTestData";
byte[] buffer = Encoding.ASCII.GetBytes(data);
Ping PingSender = new Ping();
PingOptions options = new PingOptions();
options.DontFragment = true;
PingReply reply = PingSender.Send(_ipAddress, timeout, buffer, options);
if (reply.Status == IPStatus.Success)
{
return 1;
}
else
{
return 0;
}
}
hatte ich meinen Beitrag aktualisieren mit dem Scheck Ping-Klasse jetzt ich habe Problem, dass das Ergebnis in Datagridview zurückgegeben wird, ist nicht korrekt Die meiste Zeit und manchmal der ganze PC einfrieren und neu starten ... Gibt es irgendetwas, was Sie vorschlagen, dass cheque reomte server check part? – sam
@ Sam: Ergebnis im Hinblick auf Datenraster ist nicht korrekt -> Ausführen in foreach-Schleife nicht die aktuelle Zelle des Gridview ändern, die durch die Ping-Antwort aktualisiert wird –
@ Sam PC Einfrieren und Wiederanlauf -> Welches Betriebssystem verwenden Sie? Dies sollte nicht durch normalen Anwendungscode auf Systemen geschehen, auf denen Windows NT 4 oder höher ausgeführt wird. –