Проблема в этой области:
StringTokenizer st = new StringTokenizer(in.readLine());
String n = st.nextToken(); // <-- error occurs here
String n2 = st.nextToken();
int n1 = Integer.parseInt(n);
times[i] = n1;
string[i] = n2;
Один из способов сделать это:
for (int i = 0; i < l; i++) {
String line = in.readLine();
String[] splitLine = line.split(" ");
int n1 = Integer.parseInt(splitLine[0]);
String n2 = splitLine[1];
times[i] = n1;
string[i] = n2;
}
Если вы используете полностью управляемый код, он не будет собираться.
Делегат вы стреляете - это часть объекта (из вашего описания). Пока он запущен, существует активная ссылка на объект. Как только делегат завершит работу, объект станет кандидатом на сбор.
Однако, если вы вызываете собственный код в делегате, есть некоторые ситуации, когда объект может быть фактически завершен до завершения собственного кода. Дополнительные сведения см. В этой ветке форума MSDN .