public class Program
{
readonly static object lockobj = new object();
static void Main(string[] args)
{
log4net.Config.XmlConfigurator.Configure();
int c = 0;
var makeIds = new List<int>();
using (var db = new food_data_prod_imageQualityEntities())
{
makeIds = db.Make.Where(m => m.IsHide == false && m.UserId != -1).Select(m => m.Id).ToList();
}
var allC = makeIds.Count();
var task = new Task(() =>
{
while (c < allC)
{
Console.WriteLine("Left:" + (allC - c));
Task.Delay(1000).Wait();
}
}, TaskCreationOptions.LongRunning);
task.Start();
foreach (var id in makeIds)
{
using (var db = new food_data_prod_imageQualityEntities())
{
var make = db.Make.First(m => m.Id == id);
var imageUrl = make.ImageUrl;
var hideFlag = CheckQualityToHide(GetImageInfo, imageUrl, id).Result;
make.IsHideByImageQuality = hideFlag;
db.SaveChanges();
lock (lockobj)
{
c = c + 1;
}
}
}
}
public static async Task<bool?> CheckQualityToHide(Func<string, Tuple<int, int, int>> getImageInfo, string imageUrl, int id)
{
log4net.ILog log = log4net.LogManager.GetLogger("logger-name");
try
{
var imageInfo = getImageInfo(imageUrl);
if (imageInfo.Item1 > 1 && imageInfo.Item2 > 1 && imageInfo.Item3 > 10)
{
return false;
}
else
{
return true;
}
}
catch (Exception ex)
{
log.Error("Id:" + id + ",Ex:" + ex);
return null;
}
}
public static Tuple<int, int, int> GetImageInfo(string imageUrl)
{
using (var client = new WebClient())
{
var dataResult = client.OpenRead(imageUrl);
Image pic = Image.FromStream(dataResult);
var width = pic.Width;
var height = pic.Height;
return new Tuple<int, int, int>(width, height, width * height);
}
}
}
{
readonly static object lockobj = new object();
static void Main(string[] args)
{
log4net.Config.XmlConfigurator.Configure();
int c = 0;
var makeIds = new List<int>();
using (var db = new food_data_prod_imageQualityEntities())
{
makeIds = db.Make.Where(m => m.IsHide == false && m.UserId != -1).Select(m => m.Id).ToList();
}
var allC = makeIds.Count();
var task = new Task(() =>
{
while (c < allC)
{
Console.WriteLine("Left:" + (allC - c));
Task.Delay(1000).Wait();
}
}, TaskCreationOptions.LongRunning);
task.Start();
foreach (var id in makeIds)
{
using (var db = new food_data_prod_imageQualityEntities())
{
var make = db.Make.First(m => m.Id == id);
var imageUrl = make.ImageUrl;
var hideFlag = CheckQualityToHide(GetImageInfo, imageUrl, id).Result;
make.IsHideByImageQuality = hideFlag;
db.SaveChanges();
lock (lockobj)
{
c = c + 1;
}
}
}
}
public static async Task<bool?> CheckQualityToHide(Func<string, Tuple<int, int, int>> getImageInfo, string imageUrl, int id)
{
log4net.ILog log = log4net.LogManager.GetLogger("logger-name");
try
{
var imageInfo = getImageInfo(imageUrl);
if (imageInfo.Item1 > 1 && imageInfo.Item2 > 1 && imageInfo.Item3 > 10)
{
return false;
}
else
{
return true;
}
}
catch (Exception ex)
{
log.Error("Id:" + id + ",Ex:" + ex);
return null;
}
}
public static Tuple<int, int, int> GetImageInfo(string imageUrl)
{
using (var client = new WebClient())
{
var dataResult = client.OpenRead(imageUrl);
Image pic = Image.FromStream(dataResult);
var width = pic.Width;
var height = pic.Height;
return new Tuple<int, int, int>(width, height, width * height);
}
}
}