Son kullanma tarihi geçmiş, bayatlamış bir tarayıcı kullanıyorsanız, Mercedes kullanmak yerine tosbağaya binmek gibi... Web sitelerini düzgün görüntüleyemiyorsanız eh, bi' zahmet tarayıcınızı güncelleyiniz. Modern Web standartlarını karşılayan bir tarayıcı alternatifine göz atın.
ÇözüldüYaptığım uygulama arka planda çalışmaya devam ediyor
Arkadaşlar C# üzerinden basit bir giriş yapma, kayıt olma programı yaptım fakat ana formdan diğer bir forma geçip programı çarpı ile kapatınca arka planda hâla çalışıyor. Bunu nasıl engelleyebilirim?
Birinci sayfayı muhtemelen this.hide ile gizleyip ikinci sayfaya geçiyorsun, C#'ta ise açılış sayfası kapanmadan uygulama kapanmıyor. Dolayısıyla uygulamayı tamamen kapatabilmek için Form1'i kapatmak zorundasın. Geçmiş bir konu da buna şöyle bir yanıt vermiştim;
Hatayı tahmin edebiliyorum. Muhtemelen proje arkada açık kalıyor ve sen tekrar üstünde değişiklik yaptıktan sonra başlatmak istediğinde dosyayı silemediği için sana hata veriyor. Çözüm basit. Form 2'yi kapatıp uygulamadan çıkacağın zaman application.exit metodunu kullanırsın, böylece bu sorunla karşılaşmazsın.
this.Close() mevcut nesneden çıkış yapar. Form1 ise C#'ın geliştirme kurallarına göre parent form olduğu için ondan çıkış yapmak tüm uygulamadan çıkış yapmak demek. Form2 ise form1'in üstünde oluşturulmuş oluyor ve çağrılıyor. this.Hide() metoduyla form1'i gizlediğinde, Form1'den çıkış yapamaz hale geliyorsun tekrar ortaya çıkartmadıkça. Bu sebeplede yaşadığın hata ortaya çıkıyor. Bug bu. O yüzden Form2'nin closing eventine yada herhangi bir butona System.Windows.Forms.Application.Exit( ) yazman gerekiyor. Bu arkadaş tüm uygulamayı kapatmaya yarıyor.
Buna alternatif çözüm olarak Form2'nin constructor parametrelerine Form1'i eklersin, public olarak işaretlenmiş tüm metodlara erişebilir olursun. Buna Show ve Close metodları dahil. Yine bunları Form2 closing eventine eklersen çözüm olacaktır. Kodları da vereyim.
//Form2 | Farklı kısmı bu sefer parametre değişikliği ve fazladan bir değişken yerine
// Application Exit kullandım.
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void Form2_Closing(object sender, CancelEventArgs e)
{
Application.Exit();
}
private void Form2_Load(object sender, EventArgs e)
{
this.FormClosing += Form2_Closing;
}
}
Sen ne istiyorsun onu söyle bize? Açılan ikinci formda çarpıya tıklayınca komple program mı kapanacak ne olacak? Eğer öyleyse ikinci formun kapatma callback fonksiyonuna app exit yaz işte...
Hocam biraz yeniyim de callback fonksiyonuna nerden ulaşabilirim.Ve evet çarpıya basınca program komple kapansın istiyorum.Biraz geç cevap verdim pardon.
Arka planda çalışmaya devam ediyorsa procees sürüyordur. Program içinde döngü, arka plan işlemleri gibi tüm işlemleri kapatmadan önce bitirmeniz gerekiyor. Yoksa askıda kalır program.
Arka planda çalışmaya devam ediyorsa procees sürüyordur. Program içinde döngü, arka plan işlemleri gibi tüm işlemleri kapatmadan önce bitirmeniz gerekiyor. Yoksa askıda kalır program.
Birinci sayfayı muhtemelen this.hide ile gizleyip ikinci sayfaya geçiyorsun, C#'ta ise açılış sayfası kapanmadan uygulama kapanmıyor. Dolayısıyla uygulamayı tamamen kapatabilmek için Form1'i kapatmak zorundasın. Geçmiş bir konu da buna şöyle bir yanıt vermiştim;
Hatayı tahmin edebiliyorum. Muhtemelen proje arkada açık kalıyor ve sen tekrar üstünde değişiklik yaptıktan sonra başlatmak istediğinde dosyayı silemediği için sana hata veriyor. Çözüm basit. Form 2'yi kapatıp uygulamadan çıkacağın zaman application.exit metodunu kullanırsın, böylece bu sorunla karşılaşmazsın.
this.Close() mevcut nesneden çıkış yapar. Form1 ise C#'ın geliştirme kurallarına göre parent form olduğu için ondan çıkış yapmak tüm uygulamadan çıkış yapmak demek. Form2 ise form1'in üstünde oluşturulmuş oluyor ve çağrılıyor. this.Hide() metoduyla form1'i gizlediğinde, Form1'den çıkış yapamaz hale geliyorsun tekrar ortaya çıkartmadıkça. Bu sebeplede yaşadığın hata ortaya çıkıyor. Bug bu. O yüzden Form2'nin closing eventine yada herhangi bir butona System.Windows.Forms.Application.Exit( ) yazman gerekiyor. Bu arkadaş tüm uygulamayı kapatmaya yarıyor.
Buna alternatif çözüm olarak Form2'nin constructor parametrelerine Form1'i eklersin, public olarak işaretlenmiş tüm metodlara erişebilir olursun. Buna Show ve Close metodları dahil. Yine bunları Form2 closing eventine eklersen çözüm olacaktır. Kodları da vereyim.
//Form2 | Farklı kısmı bu sefer parametre değişikliği ve fazladan bir değişken yerine
// Application Exit kullandım.
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void Form2_Closing(object sender, CancelEventArgs e)
{
Application.Exit();
}
private void Form2_Load(object sender, EventArgs e)
{
this.FormClosing += Form2_Closing;
}
}
Birinci sayfayı muhtemelen this.hide ile gizleyip ikinci sayfaya geçiyorsun, C#'ta ise açılış sayfası kapanmadan uygulama kapanmıyor. Dolayısıyla uygulamayı tamamen kapatabilmek için Form1'i kapatmak zorundasın. Geçmiş bir konu da buna şöyle bir yanıt vermiştim;