Hallo,
in meinem Programm verarbeite ich Bilder indem ich eine Maske über ein Bild lege welches sich auf einem Netzlaufwerk befindet.
Die Netzwerkverbindung bricht allerdings des öfteren zusammen, und daher wollte ich überprüfen ob die Datei auch angekommen ist oder nicht. Wie mach ich das am besten?
Da die Netzwerkverbindung öfters zusammenbricht, überprüfe ich mit
ping = new Ping();
pingReply = ping.Send(@"192.168.2.100", 120);
ob der Server online ist... wenn man jetzt allerdings ein Netzlaufwerk (zb: "T:") als HostNameOrAdress bei ping.Send mitgibt, dann funktioniert das nicht. Wie kann ich in dem Fall die IPAdresse zum Netzlaufwerk ermitteln?
Gruß,
Tom
Gruß,
Tom
kannst du nicht einfach den hostnamen anpingen der sollte sich ja nicht ändern
"Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life."
Naja, das ganze sollte natürlich nicht hardcodiert werden. Der Benutzer gibt ein Eingangsverzeichnis ein und das ist in dem Fall eben das Netzlaufwerk...
Gruß,
Tom
generell denke ich dein eigentliches problem ist die abbrechende netzwerkverbindung.
Ich würde versuchen zuerst einmal das abzustellen.
hast du vielleicht noch mehr infos, z.b wird das netzlaufwerk beim systemstart gemappt oder durch deine anwendung?
"Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life."
Naja das mit der abbrechenden Netzwerkverbindung liegt nicht an mir sondern an der Hardware vor Ort. Dh die haben dort Richtfunk und momentan ist ein Maisfeld im weg, welches teilweise das Signal stört. Ist immer unterschiedlich...
Gruß,
Tom
dann würd ich dir empfehlen statt ping etwas in dieser art zu machen am besten vor dem kopieren
System.IO.DriveInfo drv = new System.IO.DriveInfo(deinLaufwerksbuchstabe);
if (!drv.IsReady)
{
}
//oder
System.IO.DirectoryInfo dirinf = new System.IO.DirectoryInfo(deinPfad);
if (!dirinf.Exists)
{
}
//und dann hinterher (nach dem kopieren) nochmal kucken ob das drive verbunden //ist und anschließend überprüfen ob die datei die du kopiert hast existiert
//z.b
System.IO.DirectoryInfo dirinf = new System.IO.DirectoryInfo(deinPfad);
if (dirinf.Exists)
{
System.IO.FileInfo fi = new System.IO.FileInfo("")
if(!fi.Exists)
{
}
}
"Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life."
Ok vielen Dank.
Was ist jetzt besser, DriveInfo oder DirectoryInfo?
Gruß,
Tom
ich kenne deine anwendung nicht deshalb musst du im endeffekt selbst entscheiden was für deine zwecke mehr sinn macht.
Da du allerdings damit ja überpüfen willst ob das laufwerk überhaupt da ist würde ich wahrscheinlich das mit driveInfo machen.
"Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life."
Scheint allerdings nicht so zu funktionieren wie ich es will...
Wenn ich im Programm zur Laufzeit die Netzwerkverbindung trenne, dann hat driveInfo.IsReady nur folgende Exception: IsReady = Function evaluation disabled because a previous function evaluation timed out. You must continue execution to reenable function evaluation.
Gruß,
Tom
code?
"Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life."
System.IO.DriveInfo drv = new System.IO.DriveInfo(@"T:\");
if (drv.IsReady)
{
bNetworkpath = true;
}
else
{
bNetworkpath = false;
}
... nicht viel mehr zu sehen als bei deinem Beispiel schon^^
Falls Netzlaufwerk verbunden ist, also Verbindung besteht, funktionierts... dh drv.IsReady == true
Gruß,
Tom
bei mir funktioniert das egal ob das laufwerk nun da ist oder nicht.
Probier mal bitte :
System.IO.DriveInfo drv = new System.IO.DriveInfo("T");
"Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life."
Scheint allerdings nicht so zu funktionieren wie ich es will...
Wenn ich im Programm zur Laufzeit die Netzwerkverbindung trenne, dann hat driveInfo.IsReady nur folgende Exception: IsReady = Function evaluation disabled because a previous function evaluation timed out. You must continue execution to reenable function evaluation.
Das hört sich nach einer Nachricht des Debuggers/Watch an, nachdem dort eine Funktion das TimeOut überschritten hatte...
Also keine wirkliche "Exception"
Scheint allerdings nicht so zu funktionieren wie ich es will...
Wenn ich im Programm zur Laufzeit die Netzwerkverbindung trenne, dann hat driveInfo.IsReady nur folgende Exception: IsReady = Function evaluation disabled because a previous function evaluation timed out. You must continue execution to reenable function evaluation.Das hört sich nach einer Nachricht des Debuggers/Watch an, nachdem dort eine Funktion das TimeOut überschritten hatte...
Also keine wirkliche "Exception"
Ja, kann gut sein... hab ich vorher noch nie gehabt 😉
@demondriver235: T alleine hat leider nichts geholfen...
Gruß,
Tom
also wie gesagt, so muss es funktionieren deine exeption hat andere gründe, welche kann ich dir leider auch nicht sagen )-:
läuft es denn ohne debuggen?
"Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life."
Ich meine damit nur, dass wenn es so ist, es nicht an deinen Code liegt sondern daran dass du den code debuggst (bzw. wie du es machst).
Setzt mal den BreakPoint nach dem if-else-Konstrukt und kucke dann was "bNetworkpath" für einen Wert hat. Der müsste dann stimmen.
Push...
Zu früh gefreut... sieht so aus als ob das System.IO.DriveInfo erst bemerkt ob eine Verbindung verfügbar ist, wenn man im Windows zB auf T:\ doppelklickt.
Gruß,
Tom
hab das grad getestet, das funktioniert bei mir auch ohne das ich das laufwerk anklicke.
Es klingt auch nicht logisch wenn dem so wäre.
"Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life."
Also folgendes: Es scheint doch so als ob das funktioniert mit dem DriveInfo allerdings erst wenn man auf das Laufwerk doppelklickt bzw. wenn man ziemlich lange wartet (ca. 1 - 2 Minuten). Gibts da irgendwas damit man das Timeout verkürzen kann?
Gruß,
Tom