<br><font size=3>Unfortunatly it still doesn't work.</font>
<br><font size=3>Of course my first try was with "WINAPI", that
changes nothing.</font>
<br><font size=3>I reduced my code on a minimum and it looks like that:</font>
<br>
<br><font size=3>The Main-function:</font>
<br>
<br><font size=2 color=blue>int</font><font size=2> main( </font><font size=2 color=blue>void</font><font size=2>
)</font>
<br><font size=2>{</font>
<br><font size=2>        Sleep( 1000 );</font>
<br><font size=2>        cout << "in
main function" << endl;</font>
<br><font size=2>        getchar();</font>
<br><font size=2>        </font><font size=2 color=blue>return</font><font size=2>
0;</font>
<br><font size=2>}</font>
<br>
<br><font size=3>my aspect:</font>
<br>
<br><font size=2>aspect foo</font>
<br><font size=2>{</font>
<br><font size=2>             
  HANDLE myThread;</font>
<br><font size=2>             
  </font><font size=2 color=blue>int</font><font size=2> ThreadArgs;</font>
<br><font size=2>             
  </font><font size=2 color=blue>int</font><font size=2> myThreadId;</font>
<br><font size=2>             
  pointcut Main() = execution("% main(...)");</font>
<br>
<br><font size=2>             
  DWORD WINAPI bar(</font><font size=2 color=blue>void</font><font size=2>*
param)</font>
<br><font size=2>             
  {</font>
<br><font size=2>             
          cout << "in
Thread-Function" << endl;</font>
<br><font size=2>             
          </font><font size=2 color=blue>return</font><font size=2>
0;</font>
<br><font size=2>             
  }</font>
<br>
<br><font size=2>             
  advice Main() : before()</font>
<br><font size=2>             
  {</font>
<br><font size=2>             
          cout << "aspect
before main" << endl;</font>
<br><font size=2>             
          myThread = CreateThread(
NULL, 0, bar, (</font><font size=2 color=blue>void</font><font size=2>*)&ThreadArgs,
0, (LPDWORD)&myThreadId );</font>
<br><font size=2>             
  }</font>
<br>
<br><font size=2>             
  advice  Main() : after()</font>
<br><font size=2>             
  {</font>
<br><font size=2>             
          cout << "aspect
after Main" << endl;</font>
<br><font size=2>             
          TerminateThread (myThread,
0);</font>
<br><font size=2>             
          CloseHandle(myThread);</font>
<br><font size=2>             
  }</font>
<br><font size=2>};</font>
<br>
<br><font size=3>I tried the 3 lines "CreateThread", "TerminateThread"
and "CloseHandle" in an own main without weaving an aspect, and
it works.</font>
<br><font size=3>Without the "CreateThread" call the aspect works
fine.</font>
<br>
<br>
<br>
<br><font size=3>###################################################################################################</font>
<br>
<br><font size=3>On 10.03.2009, at 11:01, </font><a href=mailto:Matthias.Ritter@metop.de><font size=3 color=blue><u>Matthias.Ritter@metop.de</u></font></a><font size=3>
wrote:</font>
<br>
<br><font size=2 face="sans-serif"><br>
Hello,</font><font size=3> <br>
</font><font size=2 face="sans-serif"><br>
I'm programming an analysing tool for c++ code.</font><font size=3> </font><font size=2 face="sans-serif"><br>
I'm using the AspectC++ Add-In for Visual Studio .NET (2003).</font><font size=3>
</font><font size=2 face="sans-serif"><br>
I tried to weave a thread into the application, starting before the main-function
is executed.</font><font size=3> </font><font size=2 face="sans-serif"><br>
The code looks like this:</font><font size=3> <br>
</font><font size=2><br>
DWORD bar(</font><font size=2 color=blue>void</font><font size=2>* param)</font><font size=3>
</font><font size=2><br>
                {</font><font size=3>
</font><font size=2 face="sans-serif"><br>
                    
   // do something</font><font size=3> </font><font size=2 face="sans-serif"><br>
                    
   return 0;</font><font size=3> </font><font size=2 face="sans-serif"><br>
                }</font><font size=3>
</font>
<br>
<br><font size=3>AFAIK the prototype of thread start functions has to be</font>
<br>
<br><font size=3>DWORD WINAPI bar(void* param);</font>
<br>
<br><font size=3>The WINAPI macro expands to __stdcall, which is a relevant
part of the function's signature.</font>
<br>
<br><font size=3>Daniel </font>