Как из асинхронного кода сделать task?
От: SteeLHeaD  
Дата: 10.01.17 19:57
Оценка:
Здравствуйте, уважаемые.
Я хочу сделать вот что:
у меня есть код. Он представляет из себя вызов внешней библиотеки и 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 она, конечно же, не должна — просто завершаться с приходом коллбэка)

Спасибо за подсказки!
task async callback
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.