//How many threads we need to make checking easier
 public void count_thread()
 {
     using (linqDataContext linq = new linqDataContext())
     {
         int value = (from p in linq.sayilars select p).Count();
         lblThreadsNeed.Text = (value < 100 ? 2 : ((value / 100) + 1)).ToString();
     }
 }
 //Fetch the starting number from DB
 public void starting_from()
 {
     using (linqDataContext linq = new linqDataContext())
     {
         var query = (from p in linq.sayilars orderby p.sayi descending select p).First();
         lblChecked.Text = (Convert.ToInt32(query.sayi) + 2).ToString();
     }
 }
 //How many prime number recorded on DB
 public void count_db()
 {
     using (linqDataContext linq = new linqDataContext())
     {
         int value = (from p in linq.sayilars select p).Count();
         lblPrimeNumberCounter.Text = value.ToString();
     }
 }
 private void Form1_Load(object sender, EventArgs e)
 {
     using (linqDataContext linq = new linqDataContext())
     {
         temp tmp = new temp();
         linq.ExecuteCommand("delete from temp");
     }
 }
        //control the numbers
        public void control_prime_numbers(int bas, int son)
        {
            try
            {
                for (int i = bas; i < son; i++)
                {
                    if (function.isPrime(i))
                    {
                        lblPrimeState.Text = "Prime Number";
                        using (linqDataContext linq = new linqDataContext())
                        {
                            var query  = (from p in linq.sayilars where p.sayi < Convert.ToInt32(lblMaxValue.Text) select p);
                            int result = 0;
                            foreach (var item in query)
                            {
                                if (Convert.ToInt32(lblChecked.Text) % Convert.ToInt32(item.sayi.ToString()) == 0)
                                {
                                    result++;
                                }
                            }

                            if (should_check && result == 0)
                            {
                                should_check = false;

                                sayilar primes = new sayilar();
                                {
                                    primes.sayi = Convert.ToInt32(lblChecked.Text);
                                }
                                linq.sayilars.InsertOnSubmit(primes);
                                linq.SubmitChanges();

                                lblChecked.Text = (Convert.ToInt32(lblChecked.Text) + 2).ToString();

                                break;
                            }
                            else
                            {
                                result          = 0;
                                lblChecked.Text = (Convert.ToInt32(lblChecked.Text) + 2).ToString();
                                break;
                            }
                        }
                    }
                    else
                    {
                        lblPrimeState.Text = "Not Prime";
                    }
                }
            }
            catch { }
            finally { }
        }
        //Prepare the threads to check prime numbers
        public void set_threads()
        {
            string log = "";

            txtLog.Text = "";
            int starting = 2;
            int counter  = 0;

baslangic:
            log += "Thread " + counter.ToString() + " => Starting : " + Convert.ToInt32(starting).ToString() + " ; Ending : " + (starting + Convert.ToInt32(lblThreadCheckBetween.Text)).ToString() + Environment.NewLine;

            using (linqDataContext linq = new linqDataContext())
            {
                temp tmp = new temp();
                {
                    tmp.th  = counter;
                    tmp.bas = starting;
                    tmp.son = starting + Convert.ToInt32(lblThreadCheckBetween.Text);
                }
                linq.temps.InsertOnSubmit(tmp);
                linq.SubmitChanges();
            }
            starting += Convert.ToInt32(lblThreadCheckBetween.Text);
            counter++;

            if (counter < Convert.ToInt32(lblThreadsNeed.Text))
            {
                goto baslangic;
            }

            if (starting < int.Parse(lblMaxValue.Text))
            {
                log += "Thread " + counter.ToString() + " => Starting : " + Convert.ToInt32(starting).ToString() + " ; Ending : " + (Convert.ToInt32(lblMaxValue.Text)).ToString() + Environment.NewLine;
                using (linqDataContext linq = new linqDataContext())
                {
                    temp tmp = new temp();
                    {
                        tmp.th  = counter;
                        tmp.bas = starting;
                        tmp.son = starting + Convert.ToInt32(lblThreadCheckBetween.Text);
                    }
                    linq.temps.InsertOnSubmit(tmp);
                    linq.SubmitChanges();
                }
            }



            txtLog.Text = log;
        }
        //main function of the program
        public bool main_function()
        {
            if (contunie)
            {
                using (linqDataContext linq = new linqDataContext())
                {
                    var sorgu = (from p in linq.temps select p);
                    foreach (var item in sorgu)
                    {
                        Thread th = new Thread(() => control_prime_numbers(Convert.ToInt32(item.bas), Convert.ToInt32(item.son)));
                        th.Start();
                    }

                    temp tmp = new temp();
                    linq.ExecuteCommand("delete from temp");
                }
                return(true);
            }
            else
            {
                backgroundWorker1.CancelAsync();
                return(false);
            }
        }