サーバーにローカルに保存されている画像を取得する MVC3 アプリケーションを作成しようとしています。それらを Web ページに表示し、ユーザーが画像にタグを付けて後で確認できるようにします。タグとは、サーバー上のファイルの「タグ」プロパティを実際に変更することを意味します。以下のコードを実行すると、「Image imageToTag = new Image(); 行で、多くの UI コンポーネントがこれを必要とするため、呼び出し元のスレッドは STA でなければなりません」というエラーが表示されます。約 3 日間、マルチスレッドをあまり行ったことはありません。
Image imageToTag = new Image();
BitmapImage myBitmapImage = new BitmapImage();
var root = @"C:\Images\";
imageURLProcessed = Path.GetFullPath(@imageURLProcessed);
// BitmapImage.UriSource must be in a BeginInit/EndInit block
myBitmapImage.BeginInit();
if (!imageURLProcessed.StartsWith(root))
{
// Ensure that we are serving file only inside the root folder
// and block requests outside like "../web.config"
throw new HttpException(403, "Forbidden");
}
myBitmapImage.UriSource = new Uri(@imageURLProcessed);
myBitmapImage.EndInit();
imageToTag.Source = myBitmapImage;
imageToTag.Tag = tags;