Přidej si svou IT školu do profilu a najdi spolužáky zde na síti :)

Diskuze: Zaseknutí aplikace

C# .NET .NET (C# a Visual Basic) Zaseknutí aplikace American English version English version

Aktivity (1)
Avatar
n5ver
Člen
Avatar
n5ver:1.3.2015 21:23

Ahoj, když volám jednu metodu z metody, která oblushuje změnu Item Indexu ComboBoxu, aplikace zamrzne. Když tu samou metodu zavolám jen po stisknutí tlačítka, vše je v pořádku. Nenapadá někoho, jak to vyřešit? Já bych potřeboval, aby se sama zavolal při změně Item Indexu daného ComboBoxu.

 
Odpovědět 1.3.2015 21:23
Avatar
Odpovídá na n5ver
sadlomaslox25:1.3.2015 21:30

to bude asi chtit abys sem dal kod protoze ten tvuj popis je takovy ... :)
budto si to zacyklil tim ze volas zmenu indexu ze zmeny indexu nebo to volas s jineho vlakna.

 
Nahoru Odpovědět 1.3.2015 21:30
Avatar
n5ver
Člen
Avatar
Odpovídá na sadlomaslox25
n5ver:1.3.2015 21:39

Tuto metodu chci volat:

private void ZmenMapu()
{
    int tridniBity = 0;
    string tridniBityString = "";
    int y = 0;

    switch (_trida)
    {
        case "A":
            tridniBity = 8;
            tridniBityString = "0TTTTTTT.";
            break;

        case "B":
            tridniBity = 16;
            tridniBityString = "10TTTTTT.TTTTTTTT.";
            break;

        case "C":
            tridniBity = 24;
            tridniBityString = "11TTTTTT.TTTTTTTT.TTTTTTTT.";
            break;
    }

    int bityPodsite = Convert.ToInt32(bityMaskyComboBox.SelectedItem) - tridniBity;

    if (bityPodsite != 0)
    {
        while (bityPodsite != 0)
        {
            if (y == 8 || y == 16 || y == 24)
            {
                tridniBityString += ".";
            }
            else
            {
                tridniBityString += "S";
            }

            bityPodsite--;
            y++;
        }
    }
    while (tridniBityString.Length != 35)
    {
        if ((y == 8 || y == 16 || y == 24) && tridniBityString.Length < 34)
        {
            tridniBityString += ".";
        }
        else
        {
            tridniBityString += "H";
        }
        y++;
    }

    mapaBituTextBox.Text = tridniBityString;

    for (int i = 0; i < mapaBituTextBox.Text.Length; i++)
    {
        if (mapaBituTextBox.Text[i] == 'T' || mapaBituTextBox.Text[i] == '1' || mapaBituTextBox.Text[i] == '0')
        {
            mapaBituTextBox.SelectionStart = i;
            mapaBituTextBox.SelectionLength = 1;
            mapaBituTextBox.SelectionColor = Color.Red;
        }
        else if (mapaBituTextBox.Text[i] == 'S')
        {
            mapaBituTextBox.SelectionStart = i;
            mapaBituTextBox.SelectionLength = 1;
            mapaBituTextBox.SelectionColor = Color.Orange;
        }
        else if (mapaBituTextBox.Text[i] == 'H')
        {
            mapaBituTextBox.SelectionStart = i;
            mapaBituTextBox.SelectionLength = 1;
            mapaBituTextBox.SelectionColor = Color.Green;
        }
        else if (mapaBituTextBox.Text[i] == '.')
        {
            mapaBituTextBox.SelectionStart = i;
            mapaBituTextBox.SelectionLength = 1;
            mapaBituTextBox.SelectionColor = Color.Black;
        }
    }
}

odsud:

private void maskaComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
    int i = Convert.ToInt32(maskaComboBox.SelectedIndex);

    bityPodsiteComboBox.SelectedIndex = bityPodsiteComboBox.FindStringExact(maskaComboBox.SelectedIndex.ToString());
    maxPocetSitiComboBox.SelectedIndex = maxPocetSitiComboBox.FindStringExact(Math.Pow(2, i).ToString());
    pocetHostuComboBox.SelectedIndex = maxPocetSitiComboBox.SelectedIndex;
    bityMaskyComboBox.SelectedIndex = maxPocetSitiComboBox.SelectedIndex;

    ZmenAdresy();
    ZmenWildcard();
    ActiveControl = null;
}
 
Nahoru Odpovědět 1.3.2015 21:39
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na n5ver
Jan Vargovský:1.3.2015 23:15

Nemáš náhodou přiřazenou maskaComboBox_Se­lectedIndexChan­ged i k nějakému jinému ComboBoxu?

 
Nahoru Odpovědět 1.3.2015 23:15
Avatar
n5ver
Člen
Avatar
Odpovídá na Jan Vargovský
n5ver:2.3.2015 6:45

Nemám, je to pouze u jednoho ComboBoxu.

 
Nahoru Odpovědět 2.3.2015 6:45
Avatar
Odpovídá na n5ver
sadlomaslox25:2.3.2015 9:55

a co presne to udela? spadne to a vyhodi nejakou chybu nebo se to zasekne? btw urcite se to nazacykli uvnitr tech while cyklu co tam sou napr. while (bityPodsite != 0)?

 
Nahoru Odpovědět 2.3.2015 9:55
Avatar
rwn
Člen
Avatar
Odpovídá na n5ver
rwn:3.3.2015 14:17

Jsou dvě možnosti, buď jsi se zacyklil v jednom z těch dvou cyklů while a nebo máš při události na změnu indexu comboboxu změnu indexu, takže by se ti volala ta událost pořád dokola. Zkus si hodit do kódu break pointy a najdeš to hned čím to je. ;)

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět 3.3.2015 14:17
Co můžeš naprogramovat dnes, neodkládej na zítřek.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.