Problem z blokującym się projektem

0

Mam mały problem. Otóż po zamknięciu niektórych programów w C#(po kompilacji, uruchamiane w debuggerze), projekt się blokuje, tzn. przy nazwach Form1.cs oraz Form1.cs[Design] pojawia się kłódka i żadne wprowadzone zmiany w projekcie nie zostają zapisane ani uruchamiane w projekcie. Np. jeżeli utworzę w formie guzik, to jego na skompilowanej formie nie będzie. Przypominam, że cały efekt dzieje się po zamknięciu formy, nie jest to taka blokada jak podczas uruchomionej formy, bo wtedy nie da się nic wpisać. Całość wygląda jakby program się tak naprawdę nie zamknął. Proszę o pomoc.

[edit]
Problem wystąpił w programie, w którym po uruchomieniu uruchamiał się timer, w co każde tyknięcie sprawdzane było, czy obecna godzina jest taka sama, jak podana w programie, a jeżeli tak, to wyrzuca MessageBox'a.

0

Dzieje się tak dlatego, że faktycznie nie zamknąłeś programu. Prawdopodobnie główna formatka programu nie została zamknięta tylko wcześniej ukryta, albo masz wątek poboczny, na który czeka wątek główny.
Pamiętaj, że możesz przerwać uruchomienie programu przez Shift+F5 (chyba, albo z Ctrl nie pamiętam dokładnie)

0

Oto kod:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace hide
{
    public partial class Form1 : Form
    {
        DateTime teraz;
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            timer.Start();
        }

        private void timer_Tick(object sender, EventArgs e)
        {
            teraz = DateTime.Now;
            if (teraz.Hour == 18 && teraz.Minute == 00 && teraz.Second == 00)
            {
                MessageBox.Show("Jest osiemnasta");
            }
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            timer.Stop();
            this.Close();
        }
    }
}

Na formie istnieje tylko timer o nazwie timer.
Po skompilowaniu powyższej formatki o osiemnastej MessageBox normalnie działa, jednak po jej zamknięciu mogę sobie zmienić co mi się podoba, jednak po ponownej kompilacji te zmiany nadal się nie ukazują.

0

Czyli wychodzi na to że ciągle odpalasz starą wersje programu ? :P

'Tools' --> 'Options' -> 'Project and Solutions' --> 'Build and Run' -> 'On run, when build or deployment errors occur:' -> nie masz tutaj przypadkiem 'Launch Old Version' ? Jeśli tak zamień na coś innego. :P

0

Miałem tam zaznaczone Prompt to launch, zmieniłem na Do not launch, ale problem jest nadal ten sam. Przykładowo: dodałem w formie guzik, który ma zapisane:

timer.Stop();
this.Close();

ale nie pokazuje się on w skompilowanej formie.

0

Jeżeli zmiany Ci się nie pokazują, to wywal wszystko z folderu Debug. Nie ma siły będzie musiał przebudować.

Dlaczego w FormClosing robisz this.Close? Przy zamykaniu formatki odpalasz zamykanie formatki. Bez sensu.

Czy w Program.cs masz coś takiego: Application.Run(new Form1()) ?

0

@Sarrus
I Dzięki za pomysł z wyczyszczeniem debug, okazało się, że coś się tam faktycznie zbugowało, ale już jest ok.
II zrobiłem

this.Close()

, bo byłem tak zdesperowany tym problemem, że starałem się zrobić cokolwiek, byleby pomogło
III w Program.cs było Application.Run(new Form1())
Ogólnie dzięki za pomoc, temat uważam za zamknięty.

1 użytkowników online, w tym zalogowanych: 0, gości: 1