C# 如何在时间刻度事件中访问已处置对象?

C# 如何在时间刻度事件中访问已处置对象?,c#,.net,C#,.net,好的,简单地说,我有一个时间标记器,在时间标记事件结束后,我处理里面的代码…但是当时间标记器再次运行时…它无法访问里面的代码?那么,为什么不能重新创建已处理的对象呢?每次timetick事件通过时,我必须做什么?对象必须被使用,而不是被忽略??10倍根据您的评论,我假设代码 timertickeven(whatever...) { DisposableObject thiss = new DisposableObject(); DisposableObject.Dispose

好的,简单地说,我有一个时间标记器,在时间标记事件结束后,我处理里面的代码…但是当时间标记器再次运行时…它无法访问里面的代码?那么,为什么不能重新创建已处理的对象呢?每次timetick事件通过时,我必须做什么?对象必须被使用,而不是被忽略??10倍

根据您的评论,我假设代码

timertickeven(whatever...) { 
    DisposableObject thiss = new DisposableObject(); 
    DisposableObject.Dispose(); 
}
正在创建可处置对象(由我重命名,因为对象本身不实现IDisposable),该对象实现IDisposable接口。每次触发计时器事件时,都会创建这样一个对象并随后进行处理。由于每次都会重新创建对象,因此与上次释放的对象没有连接,因此执行了事件处理程序。因此,解决办法是,睡一觉,明天再看一看情况——用一个新鲜的头脑


此外:重新考虑一下,是否有可能以某种方式将这些一次性物品集中起来。通常,IDisposable用于消耗资源或非常大的对象。频繁地重新创建它们可能会降低执行性能

“处理内部代码”?你这是什么意思?请举个例子!hi:timertickeven(无论什么…{object thiss=new object();object.dispose();}//所以下次tickerevent通过时…thiss对象将不会被访问,我想//嗯…我不能100%确定:)…但看起来是这样的。我会再试一次,可能是因为我现在太困了,而且犯了错误……但我检查了两次。谢谢。您无法访问已处置的对象。如果你扔掉了什么东西,你就无法找回它。它一去不复返了。你能发布你的代码并解释你想做什么吗?可能有人会告诉你如何重写它。另一方面,我使用IDisposable来处理任何需要在它们离开之前清理的对象(如事件处理程序),而不管它们的大小或资源消耗如何。除此之外,回答得不错。