Ehdollisen keskeytyskohdan määrittäminen C:ssä#
Visual Studio Coden C#-virheenkorjaustoiminto tukee valintaa määrittääkseen keskeytyskohdan, joka käynnistyy vain, jos ehto täyttyy. Tämäntyyppistä keskeytyskohtaa kutsutaan ehdolliseksi keskeytyspisteeksi. Ehdolliset keskeytyskohdat voidaan määrittää suoraan tai muokkaamalla olemassa olevaa keskeytyskohtaa.
Huomautus
Visual Studio Code tukee myös ehdollista keskeytyskohtaa, joka käynnistyy sen mukaan, kuinka monta kertaa keskeytyspiste on osunut.
Oletetaan, että olet virheenkorjaamassa sovellusta, joka käsittelee tuotetietoja moniulotteisessa merkkijonomatriisissa. -matriisi sisältää tuhansia arvopisteitä. Virheenkorjauksessa esiintyy ongelma tuotteissa, joissa on merkintä new. Koodi käsittelee -matriisin silmukan for sisällä. Sinun on asetettava keskeytyskohta silmukan sisällä, mutta haluat keskeyttää vain, kun tuotteet ovat new.
Tietojenkäsittelysovelluksen tutkiminen vakion keskeytyskohdan avulla
Korvaa Program.cs-tiedoston sisältö seuraavalla koodilla:
int productCount = 2000; string[,] products = new string[productCount, 2]; LoadProducts(products, productCount); for (int i = 0; i < productCount; i++) { string result; result = Process1(products, i); if (result != "obsolete") { result = Process2(products, i); } } bool pauseCode = true; while (pauseCode == true) ;Tämä koodi käyttää -menetelmää
LoadProductstietojenproductslataamiseen matriisiin. Kun tiedot on ladattu, koodi iteroi -matriisin kautta ja kutsuu -menetelmiä nimeltäProcess1jaProcess2.Jos haluat luoda tietoja simuloiduille prosesseille, lisää seuraava menetelmä Program.cs-tiedoston loppuun:
static void LoadProducts(string[,] products, int productCount) { Random rand = new Random(); for (int i = 0; i < productCount; i++) { int num1 = rand.Next(1, 10000) + 10000; int num2 = rand.Next(1, 101); string prodID = num1.ToString(); if (num2 < 91) { products[i, 1] = "existing"; } else if (num2 == 91) { products[i, 1] = "new"; prodID = prodID + "-n"; } else { products[i, 1] = "obsolete"; prodID = prodID + "-0"; } products[i, 0] = prodID; } }-
LoadProductsmenetelmä luo 2 000 satunnaista tuotetunnusta ja määrittää -,existingnew- taiobsoletetuotteen kuvaus -kentän arvon. On noin 1% mahdollisuus, että tuotteet on merkittynew.Jos haluat simuloida tietojen käsittelyä, lisää seuraavat menetelmät Program.cs-tiedostosi loppuun:
static string Process1(string[,] products, int item) { Console.WriteLine($"Process1 message - working on {products[item, 1]} product"); return products[item, 1]; } static string Process2(string[,] products, int item) { Console.WriteLine($"Process2 message - working on product ID #: {products[item, 0]}"); if (products[item, 1] == "new") Process3(products, item); return "continue"; } static void Process3(string[,] products, int item) { Console.WriteLine($"Process3 message - processing product information for 'new' product"); }-menetelmät
Process1Process2näyttävät edistymisviestit ja palauttavat merkkijonon.Huomaa, että -
Process2menetelmä kutsuuProcess3, jos tuote onnew.Valitse Visual Studio Code Tiedoston -valikosta Tallenna.
Määritä Program.cs tiedoston yläosan lähellä oleva keskeytyskohta seuraavalle koodiriville:
result = Process1(products, i);Avaa SUORITA- JA VIRHEENKORJAUS-näkymä ja valitse sitten Aloita virheenkorjaus.
Käytä Vaihe sisään -vaihetta, niin voit käydä koodin ja -kohteen läpi
Process1Process2.Huomaa SUORITA JA VIRHEENKORJAUS -näkymän VARIABLES- ja CALL STACK -osien päivitykset.
Käy koodi läpi vaiheeseen -kohdan avulla, kunnes näet, että
iarvo on 3.SUORITA JA VIRHEENKORJAUS -näkymän MUUTTUJAT-osiossa näytetään kohteelle
imääritetty arvo.Huomaa tämä
Process1jaProcess2näytä viestit DEBUG CONSOLE -paneelissa. Todellinen sovellus saattaa edellyttää käyttäjän toimia, kun tietoja käsitellään. Jotkin vuorovaikutukset voivat olla riippuvaisia käsitellyistä tiedoista.Lopeta koodin suorittaminen Stop-painikkeella.
Ehdollisen keskeytyskohdan määrittäminen lausekkeen avulla
Tavallinen keskeytyskohta sopii erinomaisesti tietojenkäsittelysovelluksen läpi kulkemiseen. Tässä tapauksessa olet kuitenkin kiinnostunut new tuotteista, etkä halua käydä läpi kunkin tuotteen analyysiä löytääksesi tuotteet, jotka ovat new. Tämä skenaario on hyvä esimerkki siitä, milloin ehdollisia keskeytyskohtia tulee käyttää.
Napsauta hiiren kakkospainikkeella aiemmin luotua keskeytyskohtaa ja valitse sitten Muokkaa keskeytyspistettä.
Kirjoita seuraava lauseke:
products[i,1] == "new";Huomaa, että lauseke ei enää näy, kun painat Enter-näppäintä.
Saat lausekkeen tilapäisesti näkyviin viemällä hiiren osoittimen keskeytyskohdan (punaisen pisteen) päälle.
Jos haluat suorittaa sovelluksesi, kun ehdollinen keskeytyskohta on määritetty, valitse Aloita virheenkorjaus.
Odota, että sovellus pysähtyy ehdollisen keskeytyskohdan kohdalla.
Huomaa -arvo
i, joka näytetään MUUTTUJAT-osassa.Valitse Virheenkorjaus-ohjausobjektien työkalurivillä Jatka
Huomaa, että -arvoa
ion päivitetty MUUTTUJAT-osassa.Valitse Vaihe sisään.
Jatka valitsemalla Vaihe sisään ,
Process1kunnes sanoma tulee näkyviin.Huomaa, että
Process1se ilmoittaa muokkaavansa uutta tuotetta.Mieti nyt, mitä etua ehdolliset keskeytyspisteet tarjoavat.
Tässä simuloidussa tietojen käsittelyskenaariossa on noin 1% mahdollisuus, että tuote on
new. Jos käytät vakiorajapintaa ongelman virheenkorjaukseen, sinun tulee käydä läpi noin 100 tuotteen analyysi löytääksesi jonkin sinua kiinnostavannewtuotteen.Ehdolliset keskeytyskohdat voivat säästää paljon aikaa, kun suoritat sovelluksen virheenkorjausta.
Lopeta koodin suorittaminen Stop-painikkeella.
Onnittelen! Ehdollisen keskeytyskohdan määrittäminen onnistui.
Kertaus
Tässä on kaksi tärkeää asiaa, jotka tulee muistaa tästä osiosta:
- Normaalin keskeytyskohdan avulla voit keskeyttää sovelluksen aina, kun kohtaat keskeytyskohdan.
- Keskeytä sovellus ehdollisen keskeytyskohdan avulla, kun totuusarvolausekkeen arvo on
true.