2010-10-13 3 views
5

Ich habe ein lang laufendes Makro, in dem ich periodische Nachrichten an Output schreibe, nur damit der Benutzer weiß, dass etwas passiert. Das Problem ist, dass die Ausgabe nicht angezeigt wird, bis das Makro fertig ist (es sei denn, Sie haben das Dialogfeld Fortsetzen warten? Seltsamerweise geöffnet).Gibt es in Visual Studio-Makros ein Äquivalent von DoEvents?

Gibt es trotzdem 'die Ereigniswarteschlange' zu leeren?

+0

Es ist VB so funktioniert DoEvents nicht? –

+0

@Preet, es ist VBA (denke ich), und auf jeden Fall sehe ich nicht das 'Application' Objekt in Intellisense, aber vielleicht fehlen mir einige Referenzen? – Benjol

+0

Verwenden Sie einfach DoEvents, es ist eine Anweisung in VBA. –

Antwort

0

Wenn Sie auf Windows Forms verweisen, können Sie wie gewohnt auf Application.DoEvents zugreifen.

Ich habe das Haupt IDE auf Windows-Updates reagiert und schließt in Echtzeit, während das Makro mit nur

DTE.SuppressUI = False 
    Threading.Thread.Sleep(5000) 
läuft noch

Als solches Ich schlage vor, einen Standard DoEvents & Sleep(55) Schleife für eine 250 Millisekunden verwendet oder so Wenn Sie sicherstellen möchten, dass die Benutzeroberfläche aktualisiert wird, sollten Sie den Trick zusammen mit der SuppressUI=False tun.

+0

Gute Idee, außer dass ... es scheint keinen Unterschied zu machen :) – Benjol

Verwandte Themen