c# - 我应该在 c# 中使用静态函数吗?

标签 c# .net static-methods

John 的控制台应用程序多次调用我的 DLL 函数(每秒约 15 次)。我正在考虑将此函数作为一个静态 方法。

我知道:

  1. 它只能访问静态属性和对象。
  2. 它不需要实例来运行该函数。

但我不知道这些是否是我需要问自己的唯一问题。

每个 John 对我的函数的调用都在他创建的新线程中。

  • 如果我的函数出现错误,这将如何影响所有其他调用?
  • 我是否应该将此函数设为具有类(John 将创建的)实例的常规函数​​?
  • GC 怎么样?

这个问题的最佳答案是什么?

最佳答案

听起来好像有问题。在多线程环境中调用对静态(共享)对象进行操作的方法应该为您敲响警钟。

检查您的代码,如果有可能同时从两个(或更多)线程访问共享对象,请将该对象设为实例字段并将您的方法设为实例方法。

当然,是否存在风险在很大程度上取决于实际代码(您未显示),但使所有调用都非静态意味着您可以降低潜在风险。

关于c# - 我应该在 c# 中使用静态函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8370144/

相关文章:

c# - 如何使用 Html Agility Pack 获取 img/src 或 a/hrefs?

c# - 如何检查日期时间是否等于 20 :00 *local* time

c++ - 使用单例分配静态成员

.cpp 文件中的 C++ 静态对象声明

c++ - 重构具有相同参数的静态成员函数

C# 存储输入文件中的字符串以供操作和使用的最佳方式?

c# - 在 WPF 和 Silverlight 之间共享代码的最佳方式

c# - 有没有办法直接受益于 Roslyn C# 编译器的 AST?

c# - 使用 ASP.NET C# 上传到 YouTube - 避免出现 "Google login"屏幕

c# - 在 Windows 7 中捕获控制台退出 C#