John 的控制台应用程序多次调用我的 DLL 函数(每秒约 15 次)。我正在考虑将此函数作为一个静态 方法。
我知道:
- 它只能访问静态属性和对象。
- 它不需要实例来运行该函数。
但我不知道这些是否是我需要问自己的唯一问题。
每个 John 对我的函数的调用都在他创建的新线程中。
- 如果我的函数出现错误,这将如何影响所有其他调用?
- 我是否应该将此函数设为具有类(John 将创建的)实例的常规函数?
- GC 怎么样?
这个问题的最佳答案是什么?
最佳答案
听起来好像有问题。在多线程环境中调用对静态(共享)对象进行操作的方法应该为您敲响警钟。
检查您的代码,如果有可能同时从两个(或更多)线程访问共享对象,请将该对象设为实例字段并将您的方法设为实例方法。
当然,是否存在风险在很大程度上取决于实际代码(您未显示),但使所有调用都非静态意味着您可以降低潜在风险。
关于c# - 我应该在 c# 中使用静态函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8370144/