无法获取WindowsApiCodePack ShellFile缩略图异步

时间:2015-01-19 21:03:06

标签: c# windows-api-code-pack

我试图异步获取目录中文件的缩略图。除PDF之外的所有文件似乎都是异步的。

if (System.IO.File.Exists(filePath))
{
    var task = await Task.Factory.StartNew(async () =>
    { 
         using(ShellFile shellFile = ShellFile.FromFilePath(filePath))
         {
             ImageSource source = shellFile.Thumbnail.MediumBitmapSource;
             source.Freeze();
             return source;
         }
    });
    image.Dispatcher.Invoke(() => image.Source = task.Result);
}

所有其他文件都正确返回。但是,如果我第二次调用所有这些代码,如果image.source == null,那么它可以正常工作。

修改 在Hans Passant的回答之后我的工作代码

var thread = new Thread(() =>
{
    using(ShellFile shellFile = ShellFile.FromFilePath(filePath))
    {
         ImageSource source = shellFile.Thumbnail.MediumBitmapSource;
         source.Freeze();
    }
    image.Dispatcher.Invoke(() => image.Source = source);
});

thread.SetApartmentState(ApartmentState.STA);
thread.Start();

谢谢!

0 个答案:

没有答案