Backgroundworker in CLR C++ Console App
Hello, how can i reportprogress in background worker in console app? Thanks a lot :)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
|
#include "stdafx.h"
using namespace System;
using namespace System::IO;
using namespace System::Threading;
using namespace System::ComponentModel;
void OnRunWorkerCompleted(System::Object ^sender, System::ComponentModel::RunWorkerCompletedEventArgs ^e);
void SearchTree(DirectoryInfo ^ root);
void OnProgressChanged(System::Object ^sender, System::ComponentModel::ProgressChangedEventArgs ^e);
void OnDoWork(System::Object ^sender, System::ComponentModel::DoWorkEventArgs ^e);
ref class DataPacket
{
public:
String^ fileName;
};
int main(array<System::String ^> ^args)
{
System::ComponentModel::BackgroundWorker^ bgw;
bgw = gcnew System::ComponentModel::BackgroundWorker();
bgw->WorkerReportsProgress = true;
bgw->DoWork += gcnew System::ComponentModel::DoWorkEventHandler(&OnDoWork);
bgw->ProgressChanged += gcnew System::ComponentModel::ProgressChangedEventHandler(&OnProgressChanged);
bgw->RunWorkerCompleted += gcnew System::ComponentModel::RunWorkerCompletedEventHandler(&OnRunWorkerCompleted);
bgw->RunWorkerAsync();
Console::ReadKey();
return 0;
}
void SendFiles()
{
}
void OnDoWork(System::Object ^sender, System::ComponentModel::DoWorkEventArgs ^e)
{
DirectoryInfo^ root = gcnew DirectoryInfo("E:\\Test");
SearchTree(root);
}
void OnProgressChanged(System::Object ^sender, System::ComponentModel::ProgressChangedEventArgs ^e)
{
//throw gcnew System::NotImplementedException();
}
void OnRunWorkerCompleted(System::Object ^sender, System::ComponentModel::RunWorkerCompletedEventArgs ^e)
{
//throw gcnew System::NotImplementedException();
}
void SearchTree(DirectoryInfo^ root)
{
DataPacket^ dp = gcnew DataPacket();
array<FileInfo^>^ files = nullptr;
array<DirectoryInfo^>^ subDirs = nullptr;
try
{
files = root->GetFiles();
}
catch (Exception^ ex)
{
//
}
if (files != nullptr)
{
for each (FileInfo^ file in files)
{
dp->fileName = file->Name;
//Here i want report progress with ReportProgress(0, dp); but how? in gui i know how, but in console no :/
//
//
}
}
subDirs = root->GetDirectories();
for each (DirectoryInfo^ dirs in subDirs)
{
SearchTree(dirs);
}
}
|
I have never used it in a console app but it should work the same way as in a GUI.
Topic archived. No new replies allowed.