// TODO: сделать механизм завершения потока при закрытии. // проблема актуальна только если закрывать окно до полной загрузки карты // и приводит к тому что процесс закрывается не сразу, и может выдавать ошибки. public static void DoImageLoadingWork(object obj) { ThreadStartParams thread_params = (ThreadStartParams)obj; Form1 form = thread_params.form; { foreach (FileInfo file_info in thread_params.files) { try { using (Bitmap bitmap = DevIL.DevIL.LoadBitmap(file_info.file_name)) { Bitmap converted_image = bitmap.Clone( new Rectangle(0, 0, bitmap.Width, bitmap.Height), System.Drawing.Imaging.PixelFormat.Format32bppPArgb); myMethodDelegate myD1 = new myMethodDelegate(form.UpdateImage); object[] b = new object[] { file_info.x, file_info.y, converted_image }; form.Invoke(myD1, b); } } catch {} } } }
private int Run() { MyDelClass mdc = new MyDelClass(); myMethodDelegate md1 = new myMethodDelegate(mdc.Show); Thread t = new Thread(new ParameterizedThreadStart(ThreadWorker)); t.Start(md1); t.Join(); Console.WriteLine(iSet.ToString() == num ? "Test Passed" : "Test Failed"); return (iSet.ToString() == num ? 100 : -1); }
public static void Main(string [] args) { mySampleClass mySC = new mySampleClass(); myMethodDelegate myD1 = new myMethodDelegate(mySC.myStringMethod); myMethodDelegate myD2 = new myMethodDelegate(mySampleClass.mySignMethod); Console.WriteLine(myD1(1)); Console.WriteLine(myD2(-1)); // Invokes the delegates. Console.WriteLine("{0} is {1}; use the sign \"{2}\".", 5, myD1(5), myD2(5)); Console.WriteLine("{0} is {1}; use the sign \"{2}\".", -3, myD1(-3), myD2(-3)); Console.WriteLine("{0} is {1}; use the sign \"{2}\".", 0, myD1(0), myD2(0)); }