Индикатор выполнения, отображающий выполнение метода - PullRequest
1 голос
/ 25 января 2011

Я не знаю, как отобразить выполнение метода в Compact .Net Framework.Например, у меня есть метод (например, Upload () или Print () ), который занимает некоторое время (в некоторых случаях это большой интервал), чтобы закончить. Я хочу, чтобыпользователь может видеть ход выполнения трудоемкой задачи (например, Upload () ) на индикаторе выполнения.

Я пытался сделать это с Thread и ThreadPool.QueueUserWorkItembut, но я 'Я застрял.Проблема в том, что я не знаю, как синхронизировать поток метода и индикатор выполнения.

Пожалуйста, помогите.

Ответы [ 4 ]

2 голосов
/ 25 января 2011

Вы можете разделить вашу трудоемкую работу в новый поток в этом потоке, вы можете определить свой прогресс и запустить даже как ProgressChanged(int actualProgress), а затем обработать это событие в пользовательском интерфейсе и установить индикатор выполнения в соответствии со значением события.в этот момент вам придется провести некоторое обсуждение.

1 голос
/ 25 января 2011

Я надеюсь, что эта помощь:

ProgressBar pg = new ProgressBar();
pg.Maximum = 100;
pg.Step = 1;

this.Controls.Add(pg);

new Thread(new ThreadStart(() =>
    {
        // Replace with your code:
        for (int i = 0; i < 100; i++)
        {
            if (pg.InvokeRequired)
                pg.Invoke(new ThreadStart(() =>
                    {
                        pg.PerformStep();
                    }));
            else
                pg.PerformStep();
        }
    })).Start();

эта часть важна, или вы получите исключение:

if (pg.InvokeRequired)
    pg.Invoke(new ThreadStart(() =>
        {
            pg.PerformStep();
        }));
else
    pg.PerformStep();
0 голосов
/ 25 января 2011

Вы пробовали смотреть на BackgroundWorker?

Вы можете запускать темы и обновлять индикатор выполнения.

Редактировать

Не знал, что это для CF, но есть статья, которую я нашел, когда просматривал, и я не знаю, сталкивались ли вы с этим раньше:

http://msdn.microsoft.com/en-us/library/aa446488.aspx

0 голосов
/ 25 января 2011

Что вы подразумеваете под «синхронизацией потока метода и индикатора выполнения»? Я могу только догадываться, что вы получаете исключение, когда пытаетесь изменить значение индикатора выполнения? Если это проблема, вам придется использовать потокобезопасный способ: http://msdn.microsoft.com/en-us/library/ms171728.aspx

...