我已经在.NET 3.5应用程序中使用SqlDependency超过3年没有任何问题.方案如下:
最近我将系统升级到.NET 4.5,并开始看到将更改放入我们正在监视的表中的问题,但SqlDependency永远不会触发(在服务和用户应用程序中).我开始深入研究这一点,并在我的日志中注意到,在某些时候我会重新注册SqlDependency,但之后通知永远不会触发.
看到此行为后,我决定在SQL Server上运行探查器来捕获订阅事件.从捕获的数据中,我注意到有时订阅将由一个用户注册(具有唯一ID),但随后将由另一个用户触发(具有相同的唯一ID).这通常发生在我上面提到的服务和WPF应用程序的一个或多个用户身上.(我在分析器结果中附上了该问题的屏幕截图)
这是预期的行为吗?是否可以针对不同的用户触发通知?这是否指向应用程序层中的问题?任何帮助表示赞赏.
使用实验性LLVM3.5库链接进行编译时,会出现以下链接错误:
/usr/lib/llvm-3.5/lib/libLLVMSupport.a(Process.o):在
llvm::sys::Process::FileDescriptorHasColors(int)': (.text+0x85b): undefined reference to函数llvm::sys::Process::FileDescriptorHasColors(int)': (.text+0x87a): undefined reference tosetupterm'/usr/lib/llvm-3.5/lib/libLLVMSupport.a(Process.o )中:在函数 tigetnum'/ usr /lib/llvm-3.5/lib/libLLVMSupport.a(Process.o):在函数llvm::sys::Process::FileDescriptorHasColors(int)': (.text+0x888): undefined reference toset_curterm'/llvm::sys::Process::FileDescriptorHasColors(int)': (.text+0x890): undefined reference tousr/lib/llvm-3.5/lib/libLLVMSupport.a(Process.o )中:在函数 del_curterm'中
生成链接命令行llvm-config,为什么这会失败?
我正在抛弃使用Activator类的想法,以便访问程序集中的资源,否则我将为(依赖注入)创建循环引用.我之前已经完成了我需要引用的vanilla类,但我的问题是:我可以使用Activator来访问静态类吗?
绊倒我的部分是Activator返回给你一个对象的实例,而一个静态类没有实例.这可能吗?
这是我多年来第一次在SQL Server 2008中进行一些T-SQL编程,并忘记了语言的真正含义:
我意识到我可以使用C#编写我的存储过程,但是这需要允许服务器允许CLR功能,这在我的工作场所不是一个选项.
有没有人知道SQL Server中是否有任何替代T-SQL的方法,或者是否有任何计划引入的东西.当然,必须有一个更现代的替代方案......
PS:这不是为了开始一场火焰战,我真的对选项的兴趣感兴趣.
我自己和同事对于什么时候可以在.NET中对垃圾进行垃圾收集有不同意见.请使用以下代码:
Stream stream=getStream();
using(var request=new Request(stream))
{
Stream copy=request.Stream;
// From here on can "request" be garbage collected?
DoStuff1();
DoStuff2(copy);
}
Run Code Online (Sandbox Code Playgroud)
我的同事声称,当使用服务器垃圾收集器运行发布版本时request,在调用之后对该对象进行垃圾收集是有效的request.Stream.他断言这只发生在服务器垃圾收集器上,而不是工作站垃圾收集器.
这是因为Request该类有一个终结器正在关闭Stream请求的给定.结果,当DoStuff2使用流时,它得到了"对象处置"异常.由于终结器只能由垃圾收集器运行,我的同事说垃圾收集必须在finally块结束之前进行,但是在最后一次使用之后request
但是,我认为,由于上面的代码只是这样的简写:
Stream stream=getStream();
Request request=null;
try
{
Stream copy=request.Stream;
// From here on can "request" be garbage collected?
DoStuff1();
DoStuff2(copy);
}
finally
{
if(request!=null)
request.Dispose();
}
Run Code Online (Sandbox Code Playgroud)
然后request在调用之后无法进行垃圾收集request.Stream仍然可以从finally块中获取.
此外,如果垃圾收集器可能收集对象,那么该finally块可能会显示未定义的行为,就像Dispose在GC对象上调用一样,这是没有意义的.同样地,不可能优化掉finally块,因为在发生任何垃圾收集之前可能会在try/ using块内抛出异常,这将需要finally块执行. …
以下是代码:
string[] values = Acode.Split(',');
IEnumerable<Test> tst = null;
foreach (string a in values)
{
if (tst== null)
tst = entities.Test.Where(t=> (t.TCode == Convert.ToInt16(a)));
else
tst.Concat(entities.Test.Where(g => (g.TCode == Convert.ToInt16(a))));
}
return tst.ToList();
Run Code Online (Sandbox Code Playgroud)
我无法获取tst中的所有记录,它只给出了数组中最后一个值的记录.
因此,如果我的数组包含1,2,3,4我只获得4的记录.而我需要1,2和4的所有结果都附加在tst中.
任何帮助将不胜感激.
我在HttpResponseHeaders中看到的唯一方法是Add,它采用字符串类型的字符串类型.我只是想知道.NET在字符串中提供了HttpResponseHeader类型的列表吗?
所以我可以这样做:
HttpResponseMessage response = Request.CreateResponse.........;
response.Headers.Add(xxxxx.ContentRange, "something");
Run Code Online (Sandbox Code Playgroud)
我可以看到HttpResponseHeader中有一个Enum列表,但是它没有提供相应的字符串值...
即HttpResponseHeader.ContentRange,但正确的标题字符串应为Content-Range
如果我错了,请纠正我......
我在我的工作组中的一台机器上创建了一个SubVersion服务器.从我的开发框中,我能够访问存储库并检查/输出文件,没有任何问题.
我刚刚安装了TortoiseSVN,无论我做什么,它都不会连接到服务器上的存储库.我得到臭名昭着的错误"无法建立连接,因为目标机器主动拒绝它".
有没有人有任何想法为什么这可能是......?据我所知,tortoise shell扩展程序在我的用户凭据下运行.SVN命令行工具正常工作似乎很奇怪,但不是Tortoise.
两台机器都在运行Vista
注意:在这两种情况下,我都使用svn协议进行连接
最后,我修好了......!问题似乎与我下载的Subversion包有关.我下载了最新版本的SlikSVN(1.5.5)并将其安装在我的客户端和服务器上.似乎TortoiseSVN不喜欢这个版本/版本.我刚刚在两台机器上卸载了SlickSVN,并从CollabNet获取了最新版本,现在一切正常!
是否可以在 json 配置文件中传递 Formatter 的构造函数参数?
"WriteTo": [
{
"Name": "Console"
"Args": { "formatter": "Serilog.Formatting.Elasticsearch.ElasticsearchJsonFormatter, Serilog.Formatting.Elasticsearch" }
}
]
Run Code Online (Sandbox Code Playgroud)
正如您在这里看到的,ElasticsearchJsonFormatter ctor 接受一些参数。我想在上面的配置文件中配置它们。
谢谢。
我构建了一个快速程序,需要遍历一个巨大的日志文件(几百万条记录)并从内部找到各种各样的零碎.由于数据量如此巨大,我一直很想看看我的Windows任务管理器性能选项卡,看看有多少CPU和内存被使用.
程序成功获得结果后,CPU使用率明显下降.但是在看到我的内存使用率在执行期间缓慢上升到几千兆字节后,它保持不变.
我试图在我的函数结束时调用GC.Collect(),尝试将事物设置为null,尝试在发布模式下运行程序(我听说GC.Collect()可能无法正常工作,因为我希望它在调试中模式).
如果我关闭程序,内存使用量会下降,但我无法弄清楚为什么在应用程序生命周期内无法清理我的应用程序.在一天结束时,这是一个一次性的应用程序,但我只是想知道我错过了什么,即什么是持有所有这些记忆.
思考?
c# ×6
.net ×4
.net-4.5 ×1
activator ×1
asp.net ×1
linq ×1
llvm ×1
reflection ×1
serilog ×1
sql-server ×1
static ×1
svn ×1
t-sql ×1
tortoisesvn ×1