小编Rom*_*hin的帖子

如果在应用程序中使用System.Timers.Timer,是否有必要处置它?

我在我的应用程序的一个类中使用System.Timers.Timer类.我知道Timer类具有继承自实现IDisposable接口的父Component类的Dispose方法.在我的应用程序生命周期中,下面创建的类实例多次; 他们每个人都有一个Timer类的实例,它在类的生命周期中连续生成Elapsed事件.我应该在使用Timer类来配置计时器对象的类中实现IDisposable接口吗?(我见过的代码完全没有这样做).如果我使用下面的类,我担心一些非托管资源将不会被释放:

SomeClass someClass = new SomeClass();
someClass.DoSomething();
someClass = null;
Run Code Online (Sandbox Code Playgroud)

班级:

using System.Timers;

public class SomeClass
{
    private Timer m_timer;

    public SomeClass()
    {           
        m_timer = new Timer();
        m_timer.Interval = 1000;
        m_timer.Elapsed += new ElapsedEventHandler(m_timer_Elapsed);
        m_timer.AutoReset = false;
        m_timer.Start();                       
    }

    public void DoSomething()
    {

    }

    private void m_timer_Elapsed(object sender, ElapsedEventArgs e)
    {
        try
        {
            //Do some task
        }
        catch (Exception ex)
        {
            //Ignore
        }
        finally
        {
            if (m_timer != null)
            {
                //Restart the timer
                m_timer.Enabled = true;
            }
        }
    } …
Run Code Online (Sandbox Code Playgroud)

.net c# dispose timer

39
推荐指数
3
解决办法
4万
查看次数

如何限制.NET中StreamReader.ReadLine()读取的字符数?

我正在用C#编写Web服务器应用程序,并使用StreamReader类从底层NetworkStream中读取:

 NetworkStream ns = new NetworkStream(clientSocket);
 StreamReader sr = new StreamReader(ns);
 String request = sr.ReadLine();
Run Code Online (Sandbox Code Playgroud)

此代码容易受到DoS攻击,因为如果攻击者永远不会断开连接,我们将永远不会读完该行.有没有办法限制.NET中StreamReader.ReadLine()读取的字符数?

c# ddos readline streamreader

7
推荐指数
1
解决办法
2万
查看次数

标签 统计

c# ×2

.net ×1

ddos ×1

dispose ×1

readline ×1

streamreader ×1

timer ×1