Friday, 6 January 2017

Waitforexit Prozess C 22 Film

Ich benutze Process. Start, um eine Batchdatei zu starten. Die Batchdatei verwendet den START-Befehl, um mehrere Programme parallel zu starten und dann zu beenden. Sobald die Batchdatei fertig ist, wird Process. HasExited wahr und Process. ExitCode enthält den korrekten Exit-Code. Aber wenn ich nenne Process. WaitForExit () es hängt nie zurück. Das folgende Codebeispiel zeigt das Problem. Es erstellt eine Batch-Datei, startet es und druckt dann: Es sollte dann drucken: aber es funktioniert nie (obwohl HasExited ist wahr und wir haben bereits einen ExitCode). Mir ist aufgefallen, dass dies nur geschieht, wenn die Batchdatei START-Befehle enthält und wenn Standardausgabe und Standardfehler umgeleitet werden. Warum hat WaitForExit () nie wieder Was ist der richtige Weg zu warten, für einen solchen Prozess zu beenden Ist es sicher, nur Abfrage Process. HasExited oder kann das Ergebnis in anderen Problemen PS. Ich habe gerade festgestellt, dass das Aufrufen von WaitForExit (100000) mit einem riesigen Timeout (das definitiv nicht abläuft) sofort zurück, wenn der Prozess beendet wird. Wierd. Ohne Timeout hängt es. Es gibt einen grundlegenden Unterschied, wenn Sie WaitForExit () ohne ein Timeout aufrufen, es stellt sicher, dass die umgeleiteten stdouterr EOF zurückgegeben haben. Dieses stellt sicher, dass you39ve alle Ausgabe lesen, die durch den Prozess produziert wurde. Wir können nicht sehen, was quotonOutputquot tut, aber hohe Chancen, dass es Deadlocks Ihr Programm, weil es etwas Bösartiges wie die Annahme, dass Ihr Haupt-Thread im Leerlauf ist, wenn es tatsächlich in WaitForExit () stecken tut. Ndash Hans Passant Nov 3 14 am 12:06 Das scheint ein Artefakt zu sein (Id say bug) in der spezifischen Implementierung der ereignisbasierten asynchronen Handhabung von StandardOutput und StandardError. Ich bemerkte, dass, während ich konnte leicht reproduzieren Sie Ihr Problem, indem Sie einfach den Code, den Sie zur Verfügung gestellt (exzellent Code-Beispiel, übrigens)), hielt der Prozess nicht wirklich unbegrenzt. Vielmehr kehrte es von WaitForExit () zurück, nachdem beide der untergeordneten Prozesse selbst gestartet waren. Dies scheint ein absichtlicher Teil der Implementierung der Process-Klasse zu sein. Insbesondere überprüft es in der Process. WaitForExit () - Methode, sobald es das Warten auf den Prozess-Handle selbst beendet hat, ob ein Leser für stdout oder stderr erstellt wurde, falls dies der Fall ist und wenn der Timeoutwert für die WaitForExit ( ) Aufruf ist unendlich (dh -1), der Code wartet tatsächlich auf den End-of-Stream auf den Leser (n). Jeder entsprechende Leser wird nur erstellt, wenn die Methode BeginOutputReadLine () oder BeginErrorReadLine () aufgerufen wird. Die Stdout - und Stderr-Ströme werden erst nach dem Schließen der Kinderprozesse geschlossen. So warten auf das Ende dieser Ströme wird blockiert, bis das geschieht. Das WaitForExit () sollte sich anders verhalten, je nachdem, ob man eine der Methoden aufgerufen hat, die das ereignisbasierte Lesen der Streams starten oder nicht, und vor allem, dass das Lesen dieser Streams nicht direkt dazu führt, dass WaitForExit () sich so verhält Eine Inkonsistenz in der API, die es viel schwieriger zu verstehen und zu verwenden macht. Während Id persönlich nennen dies einen Bug, ich vermute, seine mögliche, dass die implementor (s) der Process-Klasse sind sich dieser Inkonsistenz bewusst und schuf sie mit Absicht. In jedem Fall wäre das Work-around zu lesen StandardOutput und StandardError direkt statt der Verwendung der ereignisbasierten Teil der API. (Natürlich, wenn diejenigen Code auf diesen Streams warten, würde man das gleiche Blocking-Verhalten zu sehen, bis das Kind Prozesse schließen.) Zum Beispiel (C, weil ich nicht wissen, F gut genug, um ein Codebeispiel wie diese zusammen schnell schlagen :)): Hoffentlich wird die oben genannten Work-around oder etwas ähnliches auf die grundlegende Frage Sie in laufen. Mein Dank gilt dem Kommentator Niels Vorgaard Christensen, der mich auf die problematischen Linien in der WaitForExit () - Methode verweist, damit ich diese Antwort verbessern kann. C-22 Verarbeitung Es gibt im Grunde keine seltsamen Chemikalien, Benzylalkohol scheint die 34exotic34 zu sein. Entwickler: Calgon 2 g Benzylalkohol 5 ml Natriummetaborat Kodalk 85 g Natriumsulfit 2 g CD 3 5,3 g Die sehr häufige Farbentwicklungsmittel Nr. 3 Kaliumbromid 1,6 g Wasser auf 1000 ml Dev. Zeit ist 14 min. Bei 75 ° F ca. 10,6 - 10,7 Es folgt ein Stopbad mit Natriumsulfit und vor dem Bleichen des Formaldehyd-Härtungsbades (jeweils 4 min). Hauptfrage für mich, scheint das Wetter sein wird es wert sein, die ganze Arbeit. Der Film muss ca. 25 Jahre alt sein und wird zumindest ziemlich beschlagen sein und Farbverschiebungen werden auch ein Problem sein. Durch die lange Lagerung wird es einen dramatischen Verlust der Filmgeschwindigkeit, die Sie nur wenig kompensieren können. Ich bemerkte diese Effekte auch mit einem anderen alten Verfahren (Agfa CNS-Verfahren). Möglicherweise gibt es bessere Resultate, um eine BW Entwicklung zu versuchen. Wie auch immer, wenn Sie noch interessiert sind, geben Sie mir Ihre E-Mail-Adresse, ich werde Ihnen ein PDF mit der Formel und Prozesszeiten senden. Grüße aus Deutschland Stefan C-22-Verfahren erfordert einen Formaldehyd-Prehärter, um die Filmemulsion vor der Verarbeitung zu härten. Darüber hinaus unterscheidet sie sich nicht wesentlich von c-41. Ohne sie fällt die Emulsion von der Basis des Films ab. Wenn Sie nicht über die Hardner können Sie es in Farbe bei einer viel niedrigeren Temperatur entwickeln, aber Sie erhalten noch Retikulation in der Emulsion, obwohl es immer noch wahrscheinlich an der Basis haften. Die andere Möglichkeit ist die Entwicklung des Films in BampW. In der Tat ist es oft der beste Ansatz (aber nicht immer), obwohl ich nie eine vernünftig gute Formel in jedem Forum für diese angeboten gesehen. Jetzt hörte ich aufdringlich klingen. Ich bekomme nur ein wenig mehr cornig jetzt. Es gibt ein paar von uns im Geschäft der Entwicklung von alten Film. Einige von uns sind wirklich sehr gut darin. Einige aren39t, aber es gibt sogar ein paar dabblers da draußen (mindestens ein sowieso), die den Service anbieten und gute Arbeit leisten. Ich glaube, keiner von uns wird reich an diesem Geschäft. Unser Unternehmen würde Ihnen weit mehr als Ihre 34whopping 27 Dollar34 aber wir werden auch viel bessere Arbeit dann werden Sie in der Lage, sich selbst zu tun. Auch unsere Scan-Techniken sind nicht typisch (filmtypabhängig) Für die Erfahrung von Tausenden von Walzen (wir entwickeln 200 bis 400 Walzen pro Monat) und ein echtes Anliegen, die Top-Qualität zu produzieren, gibt es viel zu sagen. Einige von uns bieten diesen Service tatsächlich verstehen, den Wert, dass diese Filme haben, um viele der Familien, die in Arbeit senden und wirklich wollen, um die bestmöglichen Ergebnisse zu produzieren. Sorry für den kleinen Brief. Ich verstehe, dass es einfach ist, sich vorzustellen, dass die Anbieter dieses Dienstes ein fesselndes Publikum haben, aber es ist wirklich ein gutes Geschäft an diesem Punkt (7 I39m bewusst) und als der Top-Dollar-Anbieter für diesen Service können wir nur verlassen Dass unsere Kunden etwas für unser Ergebnis tun. Film Rescue Deutschland


No comments:

Post a Comment