Do nového roku jako lepší programátoři? Znovu otevíráme večerní školu programování. Nette framework, návrhové vzory, testování nebo vůbec poprvé kurzy ASP.NET dostupné odkudkoli v republice.

Diskuze: Zaseknutí aplikace

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

Avatar
n5ver
Člen
Avatar
n5ver:

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:

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:

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ý:

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:

Nemám, je to pouze u jednoho ComboBoxu.

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

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:

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.