ERLEDIGT
NEIN
NEIN
ANTWORTEN
3
3
ZUGRIFFE
786
786
EMPFEHLEN
-
Hallo zusammen,
ich erstelle über ein C# Programm ein Worddokument mit Tabellen, Bildern usw.
Soweit funktioniert das Ganze einwandfrei, es dauert allerdings recht lange bis das Dokument erstellt ist (ca 30 Sekunden).
Normalerweise lasse ich das Dokument im Hintergrund erstellen und setze die Word Applikation erst auf sichtbar, wenn das Dokument fertig ist.
Jetzt ist mir allerdings aufgefallen, dass wenn ich die Anwendung sofort sichtbar mache, so dass ich am Bildschirm live verfolgen kann, wie das Dokument zusammen gebaut wird, die Erstellung des Dokuments lediglich 2 Sekunden benötigt, wenn ich mit der Maus in die Titelleiste von Word klicke und die Taste gedrückt halte.
Während der Hintergrunderstellung des Dokuments kann ich im Taskmanager verfolgen, dass der Prozess "WINWORD.EXE" so gut wie keine CPU-Auslastung hat. Klicke ich allerdings in die Titelleiste, so steigt die CPU-Auslastung und das Dokument wird wesentlich schneller erstellt.
Ich hab schon die Prozesspriorität von Word bzw. meinem Programm erhöht, allerdings hat das nichts bewirkt.
Kann mir jemand dieses Phänomen erklären, bzw. eine Lösung nennen, wie ich das Ganze programmtechnisch im Hintergrund schneller ablaufen lassen kann.
Gruß
Hagmak
Ich hab nun mittlerweile herausgefunden, dass ich das ganze beschleunigen kann, wenn ich in der boot.ini den Eintrag /ONECPU hinzufüge. Allerdings ist das ja keine dauerhafte Lösung.Geändert von Hagmak (06.05.10 um 11:54 Uhr)
-
Also, ich kann mir eigtl. nur vorstellen, dass da Prioritätsprobleme irgendweine Rolle spielen. Auch dieses "Gedrückt halten" (Was den Generierungsprozess anscheinend ja zum vordersten Programm macht) scheint irgendwie in die Richtung zu gehen. Aber ansonsten sinds schon seltsame Seiteneffekte.
"Wenn Sie mich suchen, ich halte mich in der Nähe des Wahnsinns auf, genauer gesagt auf der schmalen Linie zwischen Wahnsinn und Panik, gleich um die Ecke von Todesangst, nicht weit weg von Irrwitz und Idiotie!"
-- Bernd das Brot
-
Hi,
ich kenne dieses Phänomen nicht, habe aber vor kurtzem mit Multithreading begonnen und dabei einen super Artikel gefunden (link hier http://www.codeplanet.eu/tutorials/c...in-csharp.html), sind auch noch andere super Erklärungen drinnen. Aber ich schweife ab.
Jedenfalls stand da drinnen, das Windwos, wie mein Vorredner schon sagte, die Prioritäten (besser gesagt die Zeit, die jeder einzelne Thread bekommt) selber vergibt. So erhält ein Thread, der an der Oberfläche und Selectiert ist mehr Zeit zum Arbeiten als einer, der in der Taskleite minimiert ist. Mehr dazu findest im Artikel unter "Thread Priorität" (3.2.1).
Hoffe ich konnte dir helfen.
Grüße Nico
-
Dann wäre eine Lösung vielleicht sich den Main-Thread vom Word (welches im Hintergrund aktiv ist) zu holen und die Priorität zu verändern:
oderCode vbnet:1 2
Dim proc As Process = ... ' vielleicht mit Process.GetProcessesByName-Methode nach Word-Prozess suchen proc.PriorityClass = ProcessPriorityClass.Normal
Code vbnet:1
proc.Threads.Item(0).PriorityLevel = ThreadPriorityLevel.Normal
Ähnliche Themen
-
Seitenumbruch in Worddokument
Von deusfalsus im Forum Visual Basic 6.0Antworten: 5Letzter Beitrag: 21.09.07, 14:51 -
Störrisches Worddokument
Von Casanundina im Forum Office-AnwendungenAntworten: 1Letzter Beitrag: 18.09.07, 15:45 -
mit vb ein worddokument öffnen...
Von mitch_byu_kennen im Forum Visual Basic 6.0Antworten: 10Letzter Beitrag: 01.07.05, 09:31 -
WordDokument auslesen
Von hupe im Forum PHPAntworten: 2Letzter Beitrag: 25.04.04, 16:31 -
PDF wird nach Erstellung nicht richtig aufgebaut
Von matzedias im Forum PhotoshopAntworten: 6Letzter Beitrag: 13.05.03, 16:24





Zitieren
Login





