Aklımda Kalası Kelimeler

* давайте работать вместе
* Zarf ve Mazruf, Zerafet(xHoyratlık) ile aynı kökten(za-ra-fe) gelir
* Bedesten
* Suç subuta ermiştir - Suç sabit olmuştur
IAsyncResult etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
IAsyncResult etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

2 Nisan 2013 Salı

Action kullanarak multi thread sql update

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading;

namespace caThreadSqlUpdate
{
    class Program
    {
        private static SqlConnection cnn = new SqlConnection("Data Source=10.130.214.200,8585;Initial Catalog=ERecete;User Id=kullanici;Password=sifre;");
        static void Main(string[] args)
        {
            if (cnn.State != ConnectionState.Open)
            {
                cnn.Open();
            }

            SqlCommand cmd = cnn.CreateCommand();
            cmd.CommandText = "select ereceteIlacListe_id,barkod FROM dbo.EReceteIlacListesi";
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataSet ds = new DataSet();
            da.Fill(ds);

            Dictionary<IAsyncResult, Action<int, string>> li = new Dictionary<IAsyncResult, Action>();
            int i = 0;
            foreach (DataRow row in ds.Tables[0].Rows)
            {
                i++;
                Action<int, string> act = f_BarkodGuncelle;
                IAsyncResult ai = act.BeginInvoke((int)row[0], (string)row[1], delegate { Console.WriteLine("Bitti: " + row[0] + " ve " + row[1]); }, null);
                li.Add(ai, act);
                if (i == 5)
                {
                    break;
                }
            }
            while (true)
            {
                foreach (var key in li.Keys)
                {
                    if (key.IsCompleted && li[key] == null)
                    {
                        Console.WriteLine("End invoke çağırdım");
                        li[key].EndInvoke(key);
                        li[key] = null;
                    }
                }
                Thread.Sleep(1000);
            }

        }

        static public void f_BarkodGuncelle(int _iIlacId, string _sBarkod)
        {
            SqlCommand cmd = cnn.CreateCommand();
            cmd.CommandText = String.Format("UPDATE dbo.yedekEReceteIlaclari SET barkod={0} WHERE refEreceteIlacListe_id={1} ", _sBarkod, _iIlacId);
            cmd.ExecuteNonQuery();
        }
    }
}

27 Şubat 2013 Çarşamba

Action ve Func ile asenkron metot çağrı

using System;
using System.Collections.Generic;
using System.Threading;

namespace KlinikOzetTest
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("----------------- aksiyonParametresiz ---------");
            #region 
            // Action tipli değişkenlerin asenkron çağrıların, BeginInvoke ile çağırdığımız metotları 
            // EndInvoke ile sonlandırılımalıdır sonuç dönsün ve varsa hafızadaki thread fırlatılsın.
            Action aksiyonParametresiz = DonussuzParametresizMetot;
            Console.WriteLine("BeginInvoke Öncesi: " + DateTime.Now.ToString());
            object o = null;
            IAsyncResult iResult = aksiyonParametresiz.BeginInvoke(delegate { Console.WriteLine("döndüm ben"); }, o);
            Console.WriteLine("BeginInvoke sonrası: " + DateTime.Now.ToString());
            while (!iResult.IsCompleted)
            {
                Console.WriteLine("BeginInvoke tamalanmadı: " + DateTime.Now.ToString());
                if (iResult.IsCompleted)
                {
                    Console.WriteLine("EndInvoke öncesi: " + DateTime.Now.ToString());
                    aksiyonParametresiz.EndInvoke(iResult);
                    Console.WriteLine("EndInvoke sonrası: " + DateTime.Now.ToString());
                }
                
            }

            #endregion

            Console.WriteLine("----------------- aksiyonParametreli ---------");
            #region Parametreli Action değişkeninin çalıştırılması
            int paramInt = 12;
            float paramFloat = 12f;
            Action<string, int, float> aksiyonParametreli = DonussuzParametreliMetot;
            aksiyonParametreli("param string", paramInt, paramFloat);
            #endregion

            Console.WriteLine("----------------- fonksiyonParametresiz ---------");
            Func<string> fonksiyonParametresiz = DonuslüParametresizMetot;
            string sDonenSonuc = fonksiyonParametresiz();

            Console.WriteLine("----------------- fonksiyonParametreli ---------");
            Func<string, int, float, int> fonksiyonParametreli = DonuslüParametreliMetot;
            Console.WriteLine("Invoke Öncesi: "+DateTime.Now.ToString());
            int iDonen = fonksiyonParametreli.Invoke("param param", 14, 10f);
            Console.WriteLine("Invoke Sonrası: " + DateTime.Now.ToString());
            
        }

        #region VOID dönüşlü metotlar ACTION ile referans edilebilir.
        static void DonussuzParametresizMetot()
        {
            int i = 0;
            while (i < 10)
            {
                Thread.Sleep(500);
                i++;
            }
            Console.WriteLine(DateTime.Now);
        }

        static void DonussuzParametreliMetot(string _s, int _i, float _f)
        {
            Console.WriteLine(DateTime.Now);
        } 
        #endregion

        #region DÖNÜŞ tipli metotlar FUNC ile değişkene atanabilir
        static string DonuslüParametresizMetot()
        {
            Console.WriteLine(DateTime.Now);
            return DateTime.Now.ToShortDateString();
        }

        static int DonuslüParametreliMetot(string _s, int _i, float _f)
        {
            int i = 0;
            while (i < 10)
            {
                Thread.Sleep(500);
                i++;
            }
            Console.WriteLine(DateTime.Now);
            return 19;
        } 
        #endregion

    }
}
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:47
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
27.02.2013 15:08:48
BeginInvoke tamalanmadı: 27.02.2013 15:08:48
EndInvoke öncesi: 27.02.2013 15:08:48
döndüm ben
EndInvoke sonrası: 27.02.2013 15:08:48
----------------- aksiyonParametreli ---------
27.02.2013 15:08:48
----------------- fonksiyonParametresiz ---------
27.02.2013 15:08:48
----------------- fonksiyonParametreli ---------
Invoke Öncesi: 27.02.2013 15:08:48
27.02.2013 15:08:53
Invoke Sonrası: 27.02.2013 15:08:53
Press any key to continue . . .
Action,Func ya da Predicate: Func vs. Action vs. Predicate
Action için Türkçe kaynak: http://www.yazilimdevi.com/Makaleler-1198-cSharp-action-tipini-dogru-kullanmak.aspx
Daha önceden yazdığım: Form harici bir sınıftan formun kontrollerine erişmek
Dışarıdan bir referans: www.muratguvenc.net
[Begin/End]Invoke Ne işe yarar: Delegate.BeginInvoke()/EndInvoke() implementation ve dotnetcurry.com

26 Kasım 2009 Perşembe

Form harici bir sınıftan formun kontrollerine erişmek


using System;
using System.Threading;
using System.Windows.Forms;
/**
* Invoke metodu ne iş yapar?
* Invoke işlemi bir thread içinde işlem yaparken başka threaddeki bir control üzerinde işlem yapmamızı sağlar.
* Invoke metodunu kullanmadan bu control'e erişmeye kalkarsak
* "Cross-thread operation not valid"
* gibi bir mesaj alırız.
*
* Eğer runtime da ekledigimiz controller varsa ve thread içerisinde onlara erişmemiz gerekiyorsa
* invoke ve delegate kullanarak bunu yapabiliriz.
**/
namespace waForm
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private delegate void DelFormCalisirkenBizimMetodaErismemizeYardimciOlacakMetotReferansi();

private void button1_Click(object sender, EventArgs e)
{
FormHariciSinif mt = new FormHariciSinif();

DelFormCalisirkenBizimMetodaErismemizeYardimciOlacakMetotReferansi yardimciOlacakMetotReferansi
= new DelFormCalisirkenBizimMetodaErismemizeYardimciOlacakMetotReferansi(mt.f_CalistirmakIstedigimizMetot);

/**
* Formun çalışmasından farklı olarak (Bunun main thread, ilk iş parçacığımız olduğunu unutmayalım)
* Calismasini istediğimiz
* "FormHariciSinif"
* sınıftan türetilen bir objenin
*
* "f_CalistirmakIstedigimizMetot"
* metodu bulunuyor.(Bununda ikinci iş parçacığı olacağını unutmayalım)
*
* Ama metodumuz formun dışında bir sınıfın objesine ait olacağı ve her işlemin sonunda Form daki btn isimli button
* kontrolüne erişeceği için thread ler arası(iş parçacıkları arası) bir iletişime ihtiyacımız var.
**/

// Metodun sonunda, f_InvocationBitti metodu çalışsın
yardimciOlacakMetotReferansi.BeginInvoke(f_InvocationBitti, null);
}

private void f_InvocationBitti(IAsyncResult _ar)
{
if (_ar.IsCompleted)
{
MessageBox.Show("bitti");
}
}
}

public class FormHariciSinif
{
public void f_CalistirmakIstedigimizMetot()
{
Form frm = Form.ActiveForm as Form1;
Button btn = (Button) frm.Controls.Find("btn", true)[0];
for (int i = 0; i < 10; i++)
{
if (btn.InvokeRequired) // btn nesnesine başvuru farklı iş parçacığından mı? yani invoke gerekli mi?
{ // Gerekiyorsa, yeniden bir metodun referansına Invoke ile gideriz.
btn.Invoke(new MethodInvoker(delegate
{
btn.Text = i.ToString();
}));
}

Thread.Sleep(250); // Çalıştığını görelim diye.
}

/** for döngüsünden çıkınca da çalışsın diye buraya konulabilirdi ama
* biz, BeginInvoke(fBitinceCalisacakFonk,null) diye yazdık.

if (btn.InvokeRequired)
{
btn.Invoke(new MethodInvoker(delegate
{
MessageBox.Show("bitti");
}));
}
* */
}
}
}