에서 제네릭 형식의 스레드 로컬 변수를 정의하는 방법은 다음과 같은 일반적인 유형의 스레드 로컬 변수를 정의하고 싶습니다 때문에 일반 매개 변수의 문제가 발생하고있다 :델파이
threadvar
mySession: ISession<T>; // not working
델파이 제네릭 형식의 스레드 로컬 변수를 정의하기위한 권장되는 방법은 무엇입니까?
에서 제네릭 형식의 스레드 로컬 변수를 정의하는 방법은 다음과 같은 일반적인 유형의 스레드 로컬 변수를 정의하고 싶습니다 때문에 일반 매개 변수의 문제가 발생하고있다 :델파이
threadvar
mySession: ISession<T>; // not working
델파이 제네릭 형식의 스레드 로컬 변수를 정의하기위한 권장되는 방법은 무엇입니까?
개방형 제네릭 형식의 변수를 제네릭 형식 (또는 메서드) 외부에서 선언 할 수 없으며 threadvar
과 아무 관계가 없습니다.
하나는 제네릭 형식 안에 threadvar
을 넣어 그것은 당신의 ISession<T>
당신이에서 ISession<T>
상속이 아닌 일반적인 기본 유형을 사용하거나 사용에 대해 사용 T
의 유형을 알고있다 (물론 그것은 class threadvar
수있다).
또한 threadvars가 암시 적으로 마무리되지 않았기 때문에 여기서 메모리 누수가 발생할 수 있음을 알아야합니다 (here 참조).
threadvar를 제네릭 형식 안에 넣으려고했지만 코드가 컴파일되지 않습니다 : E2029 'END' 예상했지만 'THREADVAR'이 발견되었습니다. threadvar를 제네릭 형식 안에 중첩시키는 방법은 무엇입니까? – MUG4N
유형 내에 threadvar를 중첩 할 수 없습니다. threadvar에는 범용 스코프가 있지만, thread마다 인스턴스화됩니다. 이 대답의 두 번째 단락의 첫 부분은 올바르지 않습니다. –
네, 할 수 있습니다, 그것은'class threadvar' 여야합니다. –
실제로 달성하려는 것은 무엇입니까? 왜 threadvar로 할 수 없는지 설명해 주시겠습니까? mySession : ISession; 여러분의 필요에 맞지 않는 이유를 생각하면 문제를 해결하는 방법을 찾는데 도움이 될 것입니다. –
@David : 도와 줘서 고마워, 정말 고마워. 의 대답은 이미 스테판 Glienke 내 문제를 해결했습니다. – MUG4N
그래서'Session'의 모든 인스턴스화마다 별개의 스레드 변수를 갖고 싶습니까? 당신이 이것을 완전히 이해하고 있는지 궁금합니다. 이제 코드가 컴파일되었다고해서 그것이 필요한 것을 수행한다는 것을 의미하지는 않습니다. –