简体   繁体   中英

C# Window gets blank when busy -> Progressbar? But how?

I have a program which does some copy jobs (via File.Copy) that could last a few minutes. When the user brings another window to foreground in this time the program window gets blank since it doesn't redraw itself.

Now I want to show a ProgressBar in an extra window in the center of the screen, but that window get's blank too.

So I startet it in another thread which didn't help.

I'm quite sure someone did this before but I cannot find a working example. Any Ideas?

BackgroundWorker类的文档中有一个很好的示例。

You can use BackgroundWorker class.

See this answer.

ChrisF is correct. Your long operation should be done in a BackgroundWorker thread. You can use BackgroundWorker to report progress, and hook that up to a progress bar on your form.

You need to thread your operation using a BackgroundWorker . There are other ways to thread the operation, but this one is probably the simplest, and will continue to perform message pumping in the foreground so Windows doesn't think your application has stopped responding.

Another option would be to use a Thread , and use Thread.Join to wait for the background task to complete, since Thread.Join also sends standard message pump information to Windows while it waits.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM