C#nedir?com Homepage
Forum Home Forum Home > C# / .NET > Visual C#
  New Posts New Posts RSS Feed - Bir thread sorunu
  FAQ FAQ  Forum Search   Events   Register Register  Login Login

Bir thread sorunu

 Post Reply Post Reply Page  12>
   

Author
Message
phrozen View Drop Down
Senior Member
Senior Member


Joined: 16 Ocak 2005
Status: Offline
Points: 1157
Post Options Post Options   Thanks (0) Thanks(0)   Quote phrozen Quote  Post ReplyReply Direct Link To This Post Topic: Bir thread sorunu
    Posted: 01 Aralık 2010 at 10:16
içinden çıkamadığım bir thread sorunu
Yapmaya çalıştığım şey basitçe: 2 metodum var ve ben bu metotları butonClickte sırayla işletiyorum. Amacım ilk metodun ardından işlemi uzun süren 2. metodu thread içine almak... ve yapıyorum ancak yine kilitlenme yaşıyorum ve çözemedim. Yorumu olan varsa sevinirim. İlgilenenlere teşekkürler şimdiden.
        Thread thrKanal1;
        private void butonBasla_Click(object sender, EventArgs e)
        {
            ilkMetot();
            //ikinciMetot();//bunu thread içine aldığımdan burada iptal ettim
            thrkanal1 = new Thread(ikinciMetot);
            thrkanal1.Start();
            thrkanal1.Join();//bunu iptal etsem de farketmedi...thread bitmeden alttaki yazıya geçmesin diye
            //Thread.Sleep(10);//bunu da denedim olmadı/GUI için bir nefes
            MessageBox.Show("işlem bitti");
            thrKanal1.Abort();//şart mı?
        }
        
        not: thread içindeki ikinci metodun içinde başka küçük metotlara göndermeler de var. acaba bu etkili olabilir mi?
Büyük işler tecrübeyle başarılır,tecrübe ise hataların toplamıdır
Kuyuya düşmüş bir kurbağa için gökyüzü,kuyu yarıçapının karesiyle pi sayısının çarpımına eşittir
Back to Top
BezeLyE View Drop Down
Senior Member
Senior Member


Joined: 04 Aralık 2009
Status: Offline
Points: 2106
Post Options Post Options   Thanks (0) Thanks(0)   Quote BezeLyE Quote  Post ReplyReply Direct Link To This Post Posted: 01 Aralık 2010 at 11:46
ilk metoduda ayrı bir thread e almayı denediniz mi?
bir ikincisi 2.metodun kullandığı değişken vesair ilkmetoda bağıntılı şeyler mi? thread i abort etmek manuel olarak sonlandırmanız demektir zaten scope bittiğinde thread otomatik olarak sonlanır.
BezeLyE the BakLagiL
Back to Top
phrozen View Drop Down
Senior Member
Senior Member


Joined: 16 Ocak 2005
Status: Offline
Points: 1157
Post Options Post Options   Thanks (0) Thanks(0)   Quote phrozen Quote  Post ReplyReply Direct Link To This Post Posted: 01 Aralık 2010 at 12:29
1. ilk metodu da ayrı bir threade almayı denedim farketmedi
2. ikinci metodun kullandığı ve 1. metoda bağlı bir değişken yok ilk etapta ama şöyle birşey var ki;
string s="farkliMetot";
            GetType().GetMethod(s).Invoke(this, null);
yani reflection ile elde ettiğim başka bir metot... bu metodun içinde ilk metot ile elde ettiğim global değişkeni kullanıyorum. aslında denilebilir ki neden reflection ile seçilen metodu doğrudan delegate ya da thread içine almadın? almak istedim ama yapamadım. ama böyle birşey neden kilitlenir çözemedim



Edited by phrozen - 01 Aralık 2010 at 12:47
Büyük işler tecrübeyle başarılır,tecrübe ise hataların toplamıdır
Kuyuya düşmüş bir kurbağa için gökyüzü,kuyu yarıçapının karesiyle pi sayısının çarpımına eşittir
Back to Top
BezeLyE View Drop Down
Senior Member
Senior Member


Joined: 04 Aralık 2009
Status: Offline
Points: 2106
Post Options Post Options   Thanks (0) Thanks(0)   Quote BezeLyE Quote  Post ReplyReply Direct Link To This Post Posted: 01 Aralık 2010 at 14:50
Originally posted by phrozen phrozen wrote:

1. ilk metodu da ayrı bir threade almayı denedim farketmedi
2. ikinci metodun kullandığı ve 1. metoda bağlı bir değişken yok ilk etapta ama şöyle birşey var ki;
string s="farkliMetot";
            GetType().GetMethod(s).Invoke(this, null);
yani reflection ile elde ettiğim başka bir metot... bu metodun içinde ilk metot ile elde ettiğim global değişkeni kullanıyorum. aslında denilebilir ki neden reflection ile seçilen metodu doğrudan delegate ya da thread içine almadın? almak istedim ama yapamadım. ama böyle birşey neden kilitlenir çözemedim



bu demek oluyor ki ilk metod işini bitirmeden o global değişkene ulaşmaya çalışıyor olabilrsin. uygunsuz bir değer sonsuz döngüye veya bir deadlock a sebep oluyor olabilir. o zaman ilk metodunu da bir thread e al ondan sonra ilk thread in join ile sonlanmasını bekle ondan sonra 2. thread i çalıştır. ayrıca eğer sadece bir global değişkeni almak için o metodu çalıştırıyorsanız 2. thread e bunu parametre olarak geçirebilirsiniz.
BezeLyE the BakLagiL
Back to Top
phrozen View Drop Down
Senior Member
Senior Member


Joined: 16 Ocak 2005
Status: Offline
Points: 1157
Post Options Post Options   Thanks (0) Thanks(0)   Quote phrozen Quote  Post ReplyReply Direct Link To This Post Posted: 01 Aralık 2010 at 15:10
teşekkür ederim aynen yaptım ama yine kilitlendi. aslında kilitlendi demek doğru değil yani sanki thread kullanmıyormuşum gibi işlem bitene kadar form donuyor. şaşırdım kaldım yahu

Aslında burada belki de en şaşırtıcı hadise şu; kesinlikle hata ve kilitlenme olmaması.. threadi hiç kullanmasam da aynı şonucu alıyorum yine belli bir süre form donuyor sonra düzeliyor. thread nasıl yokmuş gibi olur bu kafa karıştırıcı..


Edited by phrozen - 01 Aralık 2010 at 15:35
Büyük işler tecrübeyle başarılır,tecrübe ise hataların toplamıdır
Kuyuya düşmüş bir kurbağa için gökyüzü,kuyu yarıçapının karesiyle pi sayısının çarpımına eşittir
Back to Top
ramizdayi View Drop Down
Newbie
Newbie


Joined: 04 Kasım 2010
Status: Offline
Points: 36
Post Options Post Options   Thanks (0) Thanks(0)   Quote ramizdayi Quote  Post ReplyReply Direct Link To This Post Posted: 01 Aralık 2010 at 15:45
Bu tip konularda anlık bir çözüm bulsanızda sonra başka bir yerde tekrar takılır boğulursunuz. İşin temelini öğrenin derim ben. 
 
Threading konusunda aşağıdaki kaynağı önerebilirim. Bu ve diğer pek çok sistem seviyesi konularda bilgi edinebileceğiniz tek türkçe kaynak.
 
 
c derneğinden aykut hocanın yazdığı bu kitap, bu tip konulardaki dertlerimi çözerken bana çok yardımcı oluyor.
Back to Top
phrozen View Drop Down
Senior Member
Senior Member


Joined: 16 Ocak 2005
Status: Offline
Points: 1157
Post Options Post Options   Thanks (0) Thanks(0)   Quote phrozen Quote  Post ReplyReply Direct Link To This Post Posted: 01 Aralık 2010 at 15:50
tabi doğru aslında arşivimde hemen hemen her işe yarar kitabı bulundururum ama bu nasılsa kaçmış. elimde aykut taşdelen' in ado.net kitabı var ve oldukça dolu bir kitap. bunu da haftasonu alırım muhtemelen. şu anda bu konuya takıldım kaldım bir thread varken nasıl yokmuş gibi işlem görür???
Büyük işler tecrübeyle başarılır,tecrübe ise hataların toplamıdır
Kuyuya düşmüş bir kurbağa için gökyüzü,kuyu yarıçapının karesiyle pi sayısının çarpımına eşittir
Back to Top
phrozen View Drop Down
Senior Member
Senior Member


Joined: 16 Ocak 2005
Status: Offline
Points: 1157
Post Options Post Options   Thanks (0) Thanks(0)   Quote phrozen Quote  Post ReplyReply Direct Link To This Post Posted: 01 Aralık 2010 at 16:52
BezeLyE  ve  ramizdayi şunu farkettim ve defalardır deniyorum çeşitli örneklerle... Eğer thread içindeki metotta örneğin bir klasörden dosya okuyup örneğin onu xor ile şifreliyorsam ve tekrar yazıyorsam thread içinde olsun olmasın kesinlikle işlem bitene kadar form donuyor. Bunu anlamıyorum işte anlamadım ve anlayamıyorum.... nerde kaldı threadin anlamı???
Büyük işler tecrübeyle başarılır,tecrübe ise hataların toplamıdır
Kuyuya düşmüş bir kurbağa için gökyüzü,kuyu yarıçapının karesiyle pi sayısının çarpımına eşittir
Back to Top
BezeLyE View Drop Down
Senior Member
Senior Member


Joined: 04 Aralık 2009
Status: Offline
Points: 2106
Post Options Post Options   Thanks (0) Thanks(0)   Quote BezeLyE Quote  Post ReplyReply Direct Link To This Post Posted: 01 Aralık 2010 at 17:18
daha önce thread içerisinde dosya okuyup yazdım ama donma olmadı. (ki yaklaşık 18bin dosyayı okuyup belleğe alıyordum modifiye edip tekrar yazıyordum bunların değişik kombinasyonlarını da deniyordum) aslında multi thread uygulamalar geliştirmek için windows forms pek uygun değil sebebi ise application single apartment state olarak ayarlanmış geliyor. akıllılık yapıp bunu MTA ya çevirebiliyorsunuz fakat bu sefer de windows controlleri çalışmıyor. eğer çok uzun bir kod değilse console application ve MTA  state ile denemenizi tavsiye ederim.

birde kullandığınız işlemci nedir acaba? ve program çalışırken işlemci yüküne bakarmısınız % kaç?
BezeLyE the BakLagiL
Back to Top
phrozen View Drop Down
Senior Member
Senior Member


Joined: 16 Ocak 2005
Status: Offline
Points: 1157
Post Options Post Options   Thanks (0) Thanks(0)   Quote phrozen Quote  Post ReplyReply Direct Link To This Post Posted: 01 Aralık 2010 at 17:26
BezeLyE teşekkür ederim cevaplar için sanırım çözüm için asenkron konusuna bakmam gerekiyor... araştırmalarım sonunda geldiğim nokta bu. dosya boyutu büyük dosyalar varsa okuma ve yazma sırasında donma olabiliyormuş bir yerde okudum az önce... sanırım bu... asenkron nedir ne değildir araştırıyorum... bu arada çözümü yazabilen olursa sevinirim tabi..
Büyük işler tecrübeyle başarılır,tecrübe ise hataların toplamıdır
Kuyuya düşmüş bir kurbağa için gökyüzü,kuyu yarıçapının karesiyle pi sayısının çarpımına eşittir
Back to Top
PcMaKeR View Drop Down
Moderator Group
Moderator Group


Joined: 22 Haziran 2009
Status: Offline
Points: 4516
Post Options Post Options   Thanks (0) Thanks(0)   Quote PcMaKeR Quote  Post ReplyReply Direct Link To This Post Posted: 01 Aralık 2010 at 18:54
BackgroundWorker ı neden kullanmıyorsun abi?

Thread ile delegate yazsan dahi yinede kasıyor. Thread.Sleep i kullanma o formu donduracak.

Önerim backgroundworker kullanman ve DoWork eventı içinde işini yaptır completed eventı ile veriyi al backgroundworkerdan. çok işe yarıyor. baya işimi yaradı. ha thread ın kullanıldağı yerler de oluyor...

Back to Top
phrozen View Drop Down
Senior Member
Senior Member


Joined: 16 Ocak 2005
Status: Offline
Points: 1157
Post Options Post Options   Thanks (0) Thanks(0)   Quote phrozen Quote  Post ReplyReply Direct Link To This Post Posted: 01 Aralık 2010 at 20:21
PcMaKeR sağol bir ara kullanmıştım sonra nedense thread daha pratik geldi ama çözecekse kullanırım hatta denemek lazım denerim bu akşam. ama büyük dosyaları okurken yine sorun çıkarabilir gibi geliyor bana. bakalım... şimdi ilk işim asenkron konusunda doğru düzgün makale bulmak...
Büyük işler tecrübeyle başarılır,tecrübe ise hataların toplamıdır
Kuyuya düşmüş bir kurbağa için gökyüzü,kuyu yarıçapının karesiyle pi sayısının çarpımına eşittir
Back to Top
PcMaKeR View Drop Down
Moderator Group
Moderator Group


Joined: 22 Haziran 2009
Status: Offline
Points: 4516
Post Options Post Options   Thanks (0) Thanks(0)   Quote PcMaKeR Quote  Post ReplyReply Direct Link To This Post Posted: 01 Aralık 2010 at 22:28
.net 4.0 :P

Parallel :P

Task sınıfı mükemmel o konuda. Async istiyorsan bir öneride Visual Studio Async CTP yi incele. async keywordu gelmiş baya işe yarıyor ve bir çok extentions var.
Back to Top
ramizdayi View Drop Down
Newbie
Newbie


Joined: 04 Kasım 2010
Status: Offline
Points: 36
Post Options Post Options   Thanks (0) Thanks(0)   Quote ramizdayi Quote  Post ReplyReply Direct Link To This Post Posted: 01 Aralık 2010 at 23:16
bahsettiğim kitaptan okuduğum kadarıyla (ama senin sorununu tam anladığımı söylemem o yüzden garanti olmayabilir)  Application.DoEvents()  metodu form'daki donmayı çözecek sanırım bir dene, olmazsa ehline müracaat ederiz
Back to Top
phrozen View Drop Down
Senior Member
Senior Member


Joined: 16 Ocak 2005
Status: Offline
Points: 1157
Post Options Post Options   Thanks (0) Thanks(0)   Quote phrozen Quote  Post ReplyReply Direct Link To This Post Posted: 02 Aralık 2010 at 11:05
ApplicationDoEvents()--> thread' in torunu diye düşünüyorum. Dedenin çözemediği sorunu torun çözer mi denemek lazım tabi.. Bu arada dün gece denedim asenkron bir örnek inceledim ve kendime uyarlarım donma yaşamıyorum şu an. yani tam hazmetmiş olmasam da thread kullanmadan (ya da bilinçli kullanmadan-belki asenkron olayı zaten threaddir bilemiyorum henüz) sorunum çözülmüş görünüyor.

PcMaKeR BackgroundWorker henüz deneyemedim ama merak ediyorum ve deneyeceğim. Sonucu yazarım ayrıca... Ama şunu söyleyebilirim ki özellikle büyük dosya okumalarında thread mred hikaye. donmalar oluyor. ve tek çözüm sanki asenkron..
Büyük işler tecrübeyle başarılır,tecrübe ise hataların toplamıdır
Kuyuya düşmüş bir kurbağa için gökyüzü,kuyu yarıçapının karesiyle pi sayısının çarpımına eşittir
Back to Top
ramizdayi View Drop Down
Newbie
Newbie


Joined: 04 Kasım 2010
Status: Offline
Points: 36
Post Options Post Options   Thanks (0) Thanks(0)   Quote ramizdayi Quote  Post ReplyReply Direct Link To This Post Posted: 02 Aralık 2010 at 12:30
yine bildiğim ve okuduğum kadarıyla asenkron işlemler zaten arkada gizlice thread açılarak yapılıyor ama thread kullanmak kadar zor olmuyor yazan için. ama senkronizasyon vs gibi detaylarda thread kullanmak daha esnek. backgroundworker'ı ise sadece aykut hocanın kitabındaki örneği denemiştim ve bana kullanımı çok daha zor gelmişti. seninde dediğin gibi bu tip konular veritabanına bağlanmaya benzemiyor önce çok iyi anlayıp hazmetmek lazım.
Back to Top
PcMaKeR View Drop Down
Moderator Group
Moderator Group


Joined: 22 Haziran 2009
Status: Offline
Points: 4516
Post Options Post Options   Thanks (0) Thanks(0)   Quote PcMaKeR Quote  Post ReplyReply Direct Link To This Post Posted: 02 Aralık 2010 at 14:57
asenkron zaten thread dir.

event tabanlı gibi düşün.

Thread'ı en çok donduran= internet işlemleri. ben bunda takılıp kaldıydım. bgw imdadıma yetişti. ama şöyle 10 tane işlemi yine internet kesildiğinde tetiklersem yine kasılıyor form.
Back to Top
siyah_inci View Drop Down
Senior Member
Senior Member


Joined: 15 Nisan 2009
Status: Offline
Points: 798
Post Options Post Options   Thanks (0) Thanks(0)   Quote siyah_inci Quote  Post ReplyReply Direct Link To This Post Posted: 02 Aralık 2010 at 17:13
Originally posted by PcMaKeR PcMaKeR wrote:

asenkron zaten thread dir.

event tabanlı gibi düşün.

Thread'ı en çok donduran= internet işlemleri. ben bunda takılıp kaldıydım. bgw imdadıma yetişti. ama şöyle 10 tane işlemi yine internet kesildiğinde tetiklersem yine kasılıyor form.
her tetiklemede interneti kontrol edip yoksa eğer sürekli kontrol etmek için askıya alamazmıyız acaba, aynı zamanda da kullanıcıyı uyaralım ve belirli aralıklarala test edelim internet gelirse deva etsin, gelmediği durumalrda ise kullanıcının iptal seçeneği olsun. Acaba bu mümkünümüdür?
Back to Top
PcMaKeR View Drop Down
Moderator Group
Moderator Group


Joined: 22 Haziran 2009
Status: Offline
Points: 4516
Post Options Post Options   Thanks (0) Thanks(0)   Quote PcMaKeR Quote  Post ReplyReply Direct Link To This Post Posted: 02 Aralık 2010 at 18:46
en basiti ping atmak. hiç çökmeyecek bir site? Google :D

atacaksın ping i. birtane bool değişken true false internet varsa true yoksa false.

en basit çözüm.

windows 7 ve vistada network kartına wmi ile bağlanırsan ana ethernet yada internet çıkışı sağlayan driver internete bağlıysa windows sana geri dönüş verebiliyor. xp de yok bildiğim kadar.

bende ping ile çözdüm durumu ;)
Back to Top
phrozen View Drop Down
Senior Member
Senior Member


Joined: 16 Ocak 2005
Status: Offline
Points: 1157
Post Options Post Options   Thanks (0) Thanks(0)   Quote phrozen Quote  Post ReplyReply Direct Link To This Post Posted: 02 Aralık 2010 at 19:38
açıkçası bu linkteki konuyu da inceledim ve anlamadığım nokta şu hala... backgroundworker ile nasıl CheckForIllegalCrossThreadCalls = false ile saçma sapan bir çözüm bulmaya gerek kalmıyor onu halen anlayamadım. asenkrona gerek kalmadan büyük dosyaları kasılmadan okuyor ve illegalcross hatasını otomatikman çözüyorsa iyidir diye düşünüyorum. ama dedimya ben yapamadım. asenkron daha bi mantığıma uydu diyebilirim. bu arada CheckForIllegalCrossThreadCalls = false satırı gerçekten tam bir evdeki tozları halı altına süpürme işi gibi geliyor bana. 
Büyük işler tecrübeyle başarılır,tecrübe ise hataların toplamıdır
Kuyuya düşmüş bir kurbağa için gökyüzü,kuyu yarıçapının karesiyle pi sayısının çarpımına eşittir
Back to Top
PcMaKeR View Drop Down
Moderator Group
Moderator Group


Joined: 22 Haziran 2009
Status: Offline
Points: 4516
Post Options Post Options   Thanks (0) Thanks(0)   Quote PcMaKeR Quote  Post ReplyReply Direct Link To This Post Posted: 03 Aralık 2010 at 13:14
DoWork eventı içinde form a erişirsen farklı threadlardan erişim olduğu için çakılıyor.

dowork te işi bitireceksin tutup bitiş eventına yönlendireceksin.

http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx bunun en güzel özelliği processchange eventı. bu sayede mesela progressbar koyup forma adımları gösterebiliyorsun.

yinede iş senin iş.
Back to Top
phrozen View Drop Down
Senior Member
Senior Member


Joined: 16 Ocak 2005
Status: Offline
Points: 1157
Post Options Post Options   Thanks (0) Thanks(0)   Quote phrozen Quote  Post ReplyReply Direct Link To This Post Posted: 03 Aralık 2010 at 15:36
dediğini yaptım ve basit bir 1-1000 arası for döngüsünde denedim döngü içindeki iterasyon değerini de hem listboxa yazdırdım hem progressbarda gösterdim ve hem de textbox.AppendText(..) e atadım. gerçekten textboxa atama yapana kadar kasılmadan donmadan basitçe halloldu ancak textbox.appendtext' in normalde textbox+=textbox+i.toString()' den daha hızlı olması gerekmesine rağmen bu satırda formda donmalar olmaya başladı. birazdan aynı örneği aynı nesnelerle bu kez thread, asenkron ve illegallcross çözümlü uzun yöntemle deneyeceğim fırsat bulursam. sonucu yazarım.
yani sanırım backgroundworker çuvallayacak her kısayolun bazen çuvallaması gibi... ama basit işlemlerde iyi gibi...
Büyük işler tecrübeyle başarılır,tecrübe ise hataların toplamıdır
Kuyuya düşmüş bir kurbağa için gökyüzü,kuyu yarıçapının karesiyle pi sayısının çarpımına eşittir
Back to Top
siyah_inci View Drop Down
Senior Member
Senior Member


Joined: 15 Nisan 2009
Status: Offline
Points: 798
Post Options Post Options   Thanks (0) Thanks(0)   Quote siyah_inci Quote  Post ReplyReply Direct Link To This Post Posted: 03 Aralık 2010 at 17:12
asenkron olması donma sorunlarını çözebilir ama işlemi de uzatabilr zannımca...
Back to Top
phrozen View Drop Down
Senior Member
Senior Member


Joined: 16 Ocak 2005
Status: Offline
Points: 1157
Post Options Post Options   Thanks (0) Thanks(0)   Quote phrozen Quote  Post ReplyReply Direct Link To This Post Posted: 06 Aralık 2010 at 22:20
birşey daha soracağım; şu ne kadar kolay olsa da nedense benim kafamı acayip karıştıran ve threadden daha çok zorlandığım backgroundworker ile Thread.Join benzeri birşeyi nasıl yapacağız? Yani bir metot bitmeden diğer başlamasın istiyorum.
Büyük işler tecrübeyle başarılır,tecrübe ise hataların toplamıdır
Kuyuya düşmüş bir kurbağa için gökyüzü,kuyu yarıçapının karesiyle pi sayısının çarpımına eşittir
Back to Top
BezeLyE View Drop Down
Senior Member
Senior Member


Joined: 04 Aralık 2009
Status: Offline
Points: 2106
Post Options Post Options   Thanks (0) Thanks(0)   Quote BezeLyE Quote  Post ReplyReply Direct Link To This Post Posted: 06 Aralık 2010 at 22:53
şöyle bişey olabilir. bgw1 in progresschanged eventinde isbusy controlü yapıp eğer false ise bgw2 in runworkerasync metodu çağrılabilir.
BezeLyE the BakLagiL
Back to Top
phrozen View Drop Down
Senior Member
Senior Member


Joined: 16 Ocak 2005
Status: Offline
Points: 1157
Post Options Post Options   Thanks (0) Thanks(0)   Quote phrozen Quote  Post ReplyReply Direct Link To This Post Posted: 06 Aralık 2010 at 23:00
daha basiti var RunWorkerCompleted eventinde bgw2' yi çağırırsın. ama bu hiç etkili bi yöntem gibi gelmedi bana BezeLyE
Biri bana "bgw ile herşeyi yapamazsın thread daha iyidir vs vs" gibi birşeyler söylesin de PcMaKeR tarafından bulaştırılan şu bgw ile çalışma isteğimden vazgeçip paşa paşa thread kastırmaya devam edeyim
Büyük işler tecrübeyle başarılır,tecrübe ise hataların toplamıdır
Kuyuya düşmüş bir kurbağa için gökyüzü,kuyu yarıçapının karesiyle pi sayısının çarpımına eşittir
Back to Top
BezeLyE View Drop Down
Senior Member
Senior Member


Joined: 04 Aralık 2009
Status: Offline
Points: 2106
Post Options Post Options   Thanks (0) Thanks(0)   Quote BezeLyE Quote  Post ReplyReply Direct Link To This Post Posted: 06 Aralık 2010 at 23:03
hmm o eventi görememişim demek :) malum yabancısıyım bgwnin ama bgw tek bir iş için mantıklı olabilir. birden fazla threadin varsa Thread kullanmak hatta ThreadPool gibi bir yapı kullanmak daha mantıklı. özellikle threadler arasında öncelik cart curt gibi durumlar varsa..

Edited by BezeLyE - 06 Aralık 2010 at 23:03
BezeLyE the BakLagiL
Back to Top
phrozen View Drop Down
Senior Member
Senior Member


Joined: 16 Ocak 2005
Status: Offline
Points: 1157
Post Options Post Options   Thanks (0) Thanks(0)   Quote phrozen Quote  Post ReplyReply Direct Link To This Post Posted: 06 Aralık 2010 at 23:20
hocam gerçekten ben ısınamadım şuna... i'll be back for threads:)
Büyük işler tecrübeyle başarılır,tecrübe ise hataların toplamıdır
Kuyuya düşmüş bir kurbağa için gökyüzü,kuyu yarıçapının karesiyle pi sayısının çarpımına eşittir
Back to Top
PcMaKeR View Drop Down
Moderator Group
Moderator Group


Joined: 22 Haziran 2009
Status: Offline
Points: 4516
Post Options Post Options   Thanks (0) Thanks(0)   Quote PcMaKeR Quote  Post ReplyReply Direct Link To This Post Posted: 07 Aralık 2010 at 09:26
Abi şöyle yap. Thread1, Thread2 olduğunu düşünelim.

Thread1 içindeki işlem bitince Thread2 yi çağır hemen thread1 methodundan?

Bide şu bgw ı bu forumda bir ben doğru düzgün kullanıyorum sanırım. kime önerdiysem sağlam tutturamadık.

Sen threadlara dön yada hiç kasma direk .net 4.0 ın nimetlerinden faydalan ehu eheu :-D
Back to Top
PcMaKeR View Drop Down
Moderator Group
Moderator Group


Joined: 22 Haziran 2009
Status: Offline
Points: 4516
Post Options Post Options   Thanks (0) Thanks(0)   Quote PcMaKeR Quote  Post ReplyReply Direct Link To This Post Posted: 07 Aralık 2010 at 09:34
http://www.eksisozluk.com/show.asp?t=thread

18. gönderiyi oku abi. IO işlemlerine. Güzel özetlemiş. Thread ı abort etsen dahi .net in GC si "dur ulan ben karar veririm durdurmasına" diyor. Çok başıma geldi.

Thread ayrı bir dert anasını satim be. Fıtık edebiliyor ama onsuz da olmuyor.

Bu arada MTA olarak projeyi sakın başlatma. Com objesi kullanıyorsan patlayacaktır. En basit örneği WebBrowser nesnesi STA bir component. MTA da direk patlıyor.

İşe yarar bir link buldum.

http://www.yoda.arachsys.com/csharp/multithreading.html

Yanlız dikkatimi çekiyor threadstart delegate i kullanmışlar.

bu delege olmasa da olur misal

static void hedehodo()
{
//çalıştır bişiler
}

static void main()
{
var th=new Thread(hedehodo);
th.Start();
}

veya

static void hedehodo(object obj)
{
var list=obj as List<string>();

list.ForEach((l)=>{
console.write(l);
});
}

static void main()
{
var liste = new List<string>(){"a","b","c","d"};
var th=new Thread(hedehodo);
th.Start(liste);//hedehodo methodu bir parametreli olmalı ve object türünden olmalı yoksa thread bağırıyor hadi lan ordan diye
}

Edited by PcMaKeR - 07 Aralık 2010 at 09:41
Back to Top
 Post Reply Post Reply Page  12>
  Share Topic   
   


Forum Jump Forum Permissions View Drop Down

Forum Software by Web Wiz Forums® version 11.01
Copyright ©2001-2014 Web Wiz Ltd.