我想構建我的語法來接受多個數字。當我重複數字時,比如說'二十一',就有一個錯誤。所以我一直在減少我的代碼以找到問題。我伸手語法生成器下面的一段代碼:使用SemanticResultKey時的TargetInvocationException
string[] numberString = { "one" };
Choices numberChoices = new Choices();
for (int i = 0; i < numberString.Length; i++)
{
numberChoices.Add(new SemanticResultValue(numberString[i], numberString[i]));
}
gb[1].Append(new SemanticResultKey("op1", (GrammarBuilder)numberChoices), 1, 2);
現在,當我讀「一一」它仍然給了我這個異常
,當我用Google搜索它,它指出,這是我的代碼之外的例外,我想知道這是Microsoft.Speech DLL中的錯誤或我失去了一些東西
編輯1:
我的代碼發揮各地,並取得認可是異步如下:
sre.RecognizeAsync(RecognizeMode.Multiple);
,而不是
sre.Recognize();
現在
,當我說「二十one'for例如它得到這個例外: base = {「rule」root「中的重複語義關鍵字'op1'。}}
我知道問題出在語法上,但我確實重複了'op1'。我在想什麼?
看看TargetInvocationException的內部異常。這通常會告訴你另一方出了什麼問題。 – Casper
我不能這樣做,因爲源代碼被鎖定..其Microsoft.Speech dll – Kasparov92
我的意思是說,Exception類有一個名爲InnerExeception的屬性。當拋出TargetInvocationException時,另一方發生的異常通常會包含在該屬性中。因此,如果您在代碼中捕獲TargetInvocationException並在其中放置中斷點,則應該瞭解Microsoft.Speech中出現錯誤的一些線索。 – Casper