Как я кодирую индикатор выполнения для Windows 7, чтобы также обновить себя на панели задач?

Если у вас много файлов, и каждый файл невелик (вы скажете, что 300 МБ выше, что я считаю малым для Spark), вы можете попробовать использовать SparkContext.wholeTextFiles, который создаст RDD, где каждая запись будет целым файлом.

23
задан Goyuix 18 July 2009 в 02:54
поделиться

4 ответа

В журнале MSDN есть хорошая статья о новых API панели задач . И да, это потрясающая функция: -)

По сути, все дело в реализации IFileOperation . Есть хорошая статья об использовании этого в управляемом коде здесь .

12
ответ дан 29 November 2019 в 01:18
поделиться

Для ниже .NET 4 или WinForms в любой версии .NET

Использование Windows API Code Pack от Microsoft (как упоминал Керон), это действительно просто. Вам просто нужно использовать TaskbarManager. Например,

Чтобы начать прогресс:

TaskbarManager.Instance.SetProgressState(TaskbarProgressBarState.Normal);

Чтобы обновить прогресс:

TaskbarManager.Instance.SetProgressValue(currentValue, maxProgressValue);

И когда вы закончите, чтобы закончить прогресс:

TaskbarManager.Instance.SetProgressState(TaskbarProgressBarState.NoProgress);

Есть еще кое-что, что вы можете сделать, но это должно помочь вам начать и, возможно, это все, что вам нужно.

Для .NET 4 и выше с WPF

Вы можете использовать System.Windows.Shell.TaskbarItemInfo . Например. в Xaml для вашего главного окна вам нужно добавить:

<Window.TaskbarItemInfo>
    <TaskbarItemInfo x:Name="taskBarItemInfo" />
</Window.TaskbarItemInfo>

Затем, чтобы обновить прогресс, вы должны сделать что-то вроде:

taskBarItemInfo.ProgressState = TaskbarItemProgressState.Normal;

for (int i = 0; i < 100; i++)
{
    taskBarItemInfo.ProgressValue = i / 100.0;
    Thread.Sleep(50); // whatever the 'work' really is
}

taskBarItemInfo.ProgressState = TaskbarItemProgressState.None;

Не забывайте, что если вы выполняете «работу» в фоновом потоке (что, вероятно, является хорошей идеей для долго выполняющихся задач), вам потребуется переключиться обратно в поток пользовательского интерфейса, чтобы обновить панель задач.

39
ответ дан Wilka 29 November 2019 в 01:18
поделиться

Я написал статью о реализации API прогресса панели задач Windows 7 в C # (см .: Панель прогресса панели задач Windows 7 с C # и .NET ). Элемент управления с открытым исходным кодом (BSD) и имеет примеры проектов для C # и VB.NET.

Таким образом, вам не нужно конвертировать код C ++ с нуля.

1
ответ дан Wyatt O'Day 29 November 2019 в 01:18
поделиться

Если вы планируете использовать другие функции панели задач Windows 7, другим подходом будет использование библиотеки от Microsoft: Windows API Code Pack для .NET Framework, которая больше не доступна по адресу старая ссылка , но ее можно найти на nuget .

5
ответ дан 29 November 2019 в 01:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: