最近在做数据接口传输,接口来源数据使用动态对象抓取,然后将抓到的数据放入到数据库中。
为保证接口实时性,把上述的处理封到了自定义的windows service中,并设置为自动运行,现在功能已经通过大概调试通了,可是也遇到了严重的处理问题,具体是这样的,抓取来源数据的动态对象要从外部的Web Service上取得数据,而这个Web Service发布的地址是会变化的,同时会变化还有接收接口数据的数据库,现在的做法是将这2个配置信息放到一个文件中,让windows service每次启动时去读取,问题是如果读取这个配置文件已经报错,则这个启动的windows service就相当于挂了,除了能写错误日志外,什么也做不了,我是考虑是否可以使用多线程,每次启动一个线程进行接口工作,处理过程中遇到异常,记录日志后,该线程自动终止,然后启动下一线程处理。但是查了些文档后发现似乎多线程不是处理这类问题的,就产生一个疑问,类似这种的接口数据处理,各位高人都是这么处理的,我的多线程处理思路是否已经错了,因为我之前对多线程没接触过,写起来也有些担心,是否有好的建议。
为保证接口实时性,把上述的处理封到了自定义的windows service中,并设置为自动运行,现在功能已经通过大概调试通了,可是也遇到了严重的处理问题,具体是这样的,抓取来源数据的动态对象要从外部的Web Service上取得数据,而这个Web Service发布的地址是会变化的,同时会变化还有接收接口数据的数据库,现在的做法是将这2个配置信息放到一个文件中,让windows service每次启动时去读取,问题是如果读取这个配置文件已经报错,则这个启动的windows service就相当于挂了,除了能写错误日志外,什么也做不了,我是考虑是否可以使用多线程,每次启动一个线程进行接口工作,处理过程中遇到异常,记录日志后,该线程自动终止,然后启动下一线程处理。但是查了些文档后发现似乎多线程不是处理这类问题的,就产生一个疑问,类似这种的接口数据处理,各位高人都是这么处理的,我的多线程处理思路是否已经错了,因为我之前对多线程没接触过,写起来也有些担心,是否有好的建议。
解决方案 »
- 求高手帮我在DataGridViewButtonColumn中封一个enable属性
- new 有这种写法的么?
- C# UdpClient接收数据问题(棘手)
- 100分求个net 2.0以上的oledbhelper,项目急,实在来不及弄了,,
- C# Winform 窗口快捷键设置
- 请问ASP.NET中的 Response.Write("<Script>alert('没有相关会议主题!')</Script>");中如何换行
- C#操作word:关于调用打印对话框?(100分在线等)
- 急求,C#中的分页函数是什么?
- 关于注销的问题!!在线!!!
- 请问怎么用C#来实现清除SSL状态的功能??
- 请教:为什么键值对函数不能直接在命名空间直接使用,必须在类声明中使用的原因?
- 关于C# 调用C++写的动态库
1.windows service启动 -> 2.读取配置文件 -> 3.生成C#List对象 -> 4.访问Web Service获取数据-> 5.数据规整 -> 6.将获得的数据放入数据库。
这个是单线程处理的过程,如果在步骤2读取文件出错,则该单线程挂起,即使文件修复了后面的处理也无法进行了,实时处理接口的功能就失去了。步骤2没有出错,但是获得的接口数据为空,此时在步骤6就不应当进行数据插入或者更新处理,如果这里写return则该正常进行的进程也就挂起了,当Web Service上有数据之后,该进程还是不会去访问,还是达不到实时传输接口数据的目的。针对上述2种情况,如果使用多线程处理是否可行?如果不应该使用,有什么好的处理办法吗? CSDN高人汇集,希望给出指点 ,感谢,非常感谢。
读取配置文件是读取配置文件里面的服务名吗?然后根据服务名生成C#List对象吗?请 贴出code。
最终没有采用这个方式来解决,是换了个思路,服务照启动,但是服务承担的角色变化了,服务不再涉及数据处理的任何东西,只是作为一个总调度的身份出现,它启动起来之后只是定时调用各个下属EXE,EXE启动之后自己负责完成各种操作和,即时这些EXE报错了,也不影响下次服务的启动,就是将服务和处理分开来。谢谢fiseasky。