В previous question Я спросил, как улучшить код. Было сказано, что я должен переместить его в новую нить. Я никогда не думал об этом раньше, так что это кажется отличной идеей для меня. Итак, этим утром я пошел вперед и повторно использовал немного кода, который у меня уже есть для обработки электронных писем, и обновил способ обработки изображений на моем сайте.Безопасный способ начать и использовать новую тему?
Так это хороший способ начать новую тему и обработать изображения? Есть ли необходимость заблокировать его, как я?
private static object dummy = new object();
public static void Save(int nProjId, byte[] bData)
{
var worker = new ThreadStart(() => ProcessImage(nProjId,bData));
var thread = new Thread(worker);
thread.Start();
}
private static void ProcessImage(int nProjId, byte[] bData)
{
lock (dummy)
{
try
{
byte[] xlargeImage = Thumbs.ResizeImageFile(bData, 700);
byte[] largeImage = Thumbs.ResizeImageFile(bData, 500);
//improved based on previous question to use the already reduced image
byte[] mediumImage = Thumbs.ResizeImageFile(xlargeImage, 200);
byte[] smallImage = Thumbs.ResizeImageFile(xlargeImage, 100);
//existing code to actually save the images
MyGlobals.GetDataAccessComponent().File_Save(
ConfigurationManager.ConnectionStrings["ImgStore"],
nProjId,
xlargeImage,
largeImage,
mediumImage,
smallImage);
}
catch (Exception)
{
//ToDo: add error handleing
{ }
throw;
}
}
}
О и изображения Теперь загружать и обрабатывать практически мгновенно (локально), так что это огромная помощь до сих пор. Я просто хочу убедиться, что это лучший способ сделать это. О, и я использую двухъядерную машину с сервером 2008 года с 6 ГБ или баром, поэтому у меня есть небольшое пространство для маневра, чтобы сделать его быстрее или использовать больше потоков.
Я не уверен, что 'File_Save' также использует статический ресурс. Я честно (читай ** ОЧЕНЬ **) зеленый при программировании. Но чтобы объяснить это, это вызов DAL для фактического сохранения файлов и некоторых других данных в БД. В какой-то момент я буду перемещать файловую память в файловую систему, но теперь ее проще просто оставить в БД. Но, глядя на него, он не указывает на статичность в DAL, поэтому я не думаю, что это так. –