Здравствуйте, уважаемые.
Я хочу сделать вот что:
у меня есть код. Он представляет из себя вызов внешней библиотеки и callback из неё.
Я хочу — для дальнейшей работы — сделать из этого task.
(в частности, что бы потомо воспользоваться методом .ContinueWith()).
Вот код, который я хочу обернуть в task:
public partial class Form1 : Form {
public Form15() {
InitializeComponent();
button1.Click += button1_Click;
}
void button1_Click(object sender, EventArgs e) {
SevenZipExtractor.SetLibraryPath(@"c:\Program Files\7-Zip\7z.dll");
SevenZipCompressor compressor = new SevenZipCompressor();
compressor.ArchiveFormat=OutArchiveFormat.SevenZip;
compressor.CompressionLevel=CompressionLevel.Ultra;
compressor.CompressionMode=CompressionMode.Create;
string[] ffNames = new[] {@"c:\Temp\my.log"};
compressor.CompressionFinished += compressor_CompressionFinished;
compressor.CompressFiles(@"c:\Temp\my.log.7z", ffNames);
}
void compressor_CompressionFinished(object sender, EventArgs e) {
MessageBox.Show("Ready!");
}
}
То есть, в строке
compressor.CompressFiles(@"c:\Temp\my.log.7z", ffNames);
происходит запуск внешнего компонента, в в строке
MessageBox.Show("Ready!");
— как раз приходит callback, по которому можно завершить задачу
(показывать messageBox она, конечно же, не должна — просто завершаться с приходом коллбэка)
Спасибо за подсказки!