Problem z blokującym się projektem

Problem z blokującym się projektem
cPlusPlus
  • Rejestracja:około 12 lat
  • Ostatnio:około 6 lat
  • Postów:99
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.

edytowany 1x, ostatnio: cPlusPlus
Sarrus
  • Rejestracja:około 14 lat
  • Ostatnio:około godziny
  • Postów:2512
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)

cPlusPlus
  • Rejestracja:około 12 lat
  • Ostatnio:około 6 lat
  • Postów:99
0

Oto kod:

Kopiuj
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ą.

DibbyDum
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Polska, Kraków
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


Yubby dibby dibby dibby dibby dibby dibby dum..
cPlusPlus
  • Rejestracja:około 12 lat
  • Ostatnio:około 6 lat
  • Postów:99
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:

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

ale nie pokazuje się on w skompilowanej formie.

edytowany 2x, ostatnio: cPlusPlus
DibbyDum
Bierzesz z ToolBoxa przeciągasz przycisk tak? Potem klikasz na niego dwa razy i wchodzi Ci do kodu a w tym kodzie dodajesz to co powyżej jeżeli tak i wciąż nie działa to ja nie mam pomysłu. :D
Sarrus
  • Rejestracja:około 14 lat
  • Ostatnio:około godziny
  • Postów:2512
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()) ?

edytowany 1x, ostatnio: Sarrus
cPlusPlus
  • Rejestracja:około 12 lat
  • Ostatnio:około 6 lat
  • Postów:99
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

Kopiuj
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.

edytowany 2x, ostatnio: cPlusPlus

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.