Если у вас много файлов, и каждый файл невелик (вы скажете, что 300 МБ выше, что я считаю малым для Spark), вы можете попробовать использовать SparkContext.wholeTextFiles
, который создаст RDD, где каждая запись будет целым файлом.
В журнале MSDN есть хорошая статья о новых API панели задач . И да, это потрясающая функция: -)
По сути, все дело в реализации IFileOperation
. Есть хорошая статья об использовании этого в управляемом коде здесь .
Для ниже .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;
Не забывайте, что если вы выполняете «работу» в фоновом потоке (что, вероятно, является хорошей идеей для долго выполняющихся задач), вам потребуется переключиться обратно в поток пользовательского интерфейса, чтобы обновить панель задач.
Я написал статью о реализации API прогресса панели задач Windows 7 в C # (см .: Панель прогресса панели задач Windows 7 с C # и .NET ). Элемент управления с открытым исходным кодом (BSD) и имеет примеры проектов для C # и VB.NET.
Таким образом, вам не нужно конвертировать код C ++ с нуля.
Если вы планируете использовать другие функции панели задач Windows 7, другим подходом будет использование библиотеки от Microsoft: Windows API Code Pack для .NET Framework, которая больше не доступна по адресу старая ссылка , но ее можно найти на nuget .