系统相关
首页 > 系统相关> > Windows Mobile:Finalizer中的异常终止程序

Windows Mobile:Finalizer中的异常终止程序

作者:互联网

我的Windows移动应用程序有时会崩溃,但在System.Net.HttpReadStream的终结器中发生异常.

它仅在某些情况下发生,但随后会使整个程序崩溃.当这样的内部终结器抛出时,我能做些什么使程序继续运行?或者,如何防止此类错误?

这是异常的堆栈跟踪(不完整,因为我必须输入整个内容…

ObjectDisposedException

at System.Threading.Timer.throwIfDisposed()
at System.Threading.Timer.Change(UInt32 dueTime, UInt32 period)
at ...
at System.Net.ContentLengthReadStream.doClose()
at System.Net.HttpReadStream.Finalize()

调用代码为:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(actionUrl);
request.AllowAutoRedirect = true;
request.AllowWriteStreamBuffering = true;
request.Method = "POST";
request.ContentType = "application/json";

using (StreamWriter writer = new StreamWriter(request.GetRequestStream()))
{
    JsonSerializer serializer = new JsonSerializer();
    serializer.Serialize(writer, myRequestObject);
}

using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
    using (StreamReader reader = new StreamReader(response.GetResponseStream()))
    {
        JsonSerializer serializer = new JsonSerializer();
        MyResultObject result = (MyResultObject)serializer.Deserialize(reader, typeof(MyResultObject));

        return result;
    }
}

更新资料

The calling code above is fine. The problem was caused by another HttpWebRequest where the response was not disposed. So remember, always dispose the response object, but especially in Compact Framework since it can bring down your whole application!

解决方法:

thread描述了类似的问题.

问题可能出在第二个using块内部.这样,响应对象就不会关闭.

标签:windows-mobile,compact-framework,c,net
来源: https://codeday.me/bug/20191107/2003364.html