Till att börja med så saknar jag en avdelning avsedd för programmeringsdiskussioner kring era produkter, eller vill ni att de ska postas i "Allmänt" ?
Nästa grej:
Hela mitt test ser ut så här:
Code: Select all
[TestMethod]
public void TestInit()
{
for( int i = 0; i < 2; ++i ) {
using( TWrapper w = new TWrapper() ) {
}
}
}
Code: Select all
public sealed class TWrapper : IDisposable
{
public TWrapper()
{
Interop.Init();
}
private void Close()
{
Interop.Close();
}
#region IDisposable
private bool disposed = false;
public void Dispose()
{
Dispose( true );
GC.SuppressFinalize( this );
}
~TWrapper()
{
Dispose( false );
}
protected void Dispose( bool disposeManaged )
{
if( !disposed ) {
if( disposeManaged ) {
}
Close();
disposed = true;
}
}
#endregion // IDisposable
}
Code: Select all
/// <summary>
/// Initializes communication with Telldus-core
/// </summary>
[DllImport( "Tellduscore.dll", CharSet=CharSet.Ansi, CallingConvention=CallingConvention.StdCall, EntryPoint="tdInit")]
public static extern void Init();
/// <summary>
/// Closes the communication with Telldus-core
/// </summary>
[DllImport( "Tellduscore.dll", CharSet=CharSet.Ansi, CallingConvention=CallingConvention.StdCall, EntryPoint="tdClose" )]
public static extern void Close();
Jag gissar på att detta är vad som diskuterats i denna tråd: http://www.telldus.com/forum/viewtopic.php?f=7&t=2139System.AccessViolationException was unhandled by user code
Message=Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
Source=CZTellstickWrapper
StackTrace:
....
InnerException:
Kör man samma test via C++/CLI, som i den länkade tråden, så uppstår inte detta problem, det syns iaf inte utåt. Det kan ju dock bero på att med C++/CLI så används ju inte MSIL vid anropet, vilket också tar bort valideringen, så det är ju möjligt att det bara 'göms'. Mina signaturer för PInvoke skiljer sig visserligen rent visuellt mot de som finns i er .NET wrapper, men valda värden är ju de samma som standardvärdena.
Det bör vara tämligen lätt för er att reproducera, detta.
Jag har v2.1.1 av Tellduscenter installerat på en W7 x64 (men felet uppträder även som 32-bitars process).