自己写了一个WinForm程序,导致win8经常蓝屏

qq_31206109 2016-01-13 09:30:49
程序的内容大概是一个200长度的数组,数组里面存的都是网址,然后有一个timer每1秒检测一次进程(b),如果b进程不存在,则


System.Diagnostics.Process.Start(path, x);

执行一个下载软件,这个软件下载url的内容,
(这个软件执行完毕自动会退出)

大概就是这么一个软件,但是会经常导致电脑蓝屏(不存在占用CPU,内存过多情况),(不用这软件没蓝屏过),一用这软件几乎一天蓝屏3-4次,蓝屏信息为空,只有代码0x00000133,也查询不到任何结果,所以再次请教各位大神。
...全文
712 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_31206109 2016-01-16
  • 打赏
  • 举报
回复
首先是a软件(主软件) 首先系统剪贴板有一个HTML代码
MemoryStream vMemoryStream = Clipboard.GetData("Html Format") as MemoryStream;
                vMemoryStream.Position = 0;
                byte[] vBytes = new byte[vMemoryStream.Length];
                vMemoryStream.Read(vBytes, 0, (int)vMemoryStream.Length);
                textBox4.Text = Encoding.UTF8.GetString(vBytes);
                clipboardNull = textBox4.Text == "";
粘贴到软件里 通过一些算法提取需要的url和标题保存到
IDictionary<string(url标题), string(url)>
然后把这个url再保存到数组ArrayURL里 然后点击开始按钮后
timer.Enabled=true;
timer时间为1000,代码如下

                Process[] processes = Process.GetProcessesByName("PageSub(b软件)");
                bool bool_= true;
                foreach (Process process in processes)
                {
                    if (process.Id > -1)
                    {
                        bool_= false;
                        break;
                    }
                }
                if (bool_)
                {
                    StartNew();
                }
StartNew();代码

string path = @"PageSub.exe";
            if(isN(id,ArrayURL)){ timer.Enabled=false;  MessageBox.Show("操作完成");  return;}//检测是否完成
            string x =ArrayURL[id] + "#url#" + ID + "#ID #" +JP+ "#JP#";
            foreach (var item in dataAll.ds)//dataAll.ds是IDictionary中经过处理的url
            {
                if (item.Trim().ToLower().Equals(textBox1.Text.Trim().ToLower()))
                {
                    x += "true";
                    break;
                }
            }
            System.Diagnostics.Process.Start(path, x);
id++;
这大概就是a(主)软件 b软件代码: 检测b软件是否已经启动
 bool blnIsRunning;
            Mutex mutexApp = new Mutex(false, Assembly.GetExecutingAssembly().FullName, out blnIsRunning);
            if (!blnIsRunning)
            {
                Application.Exit();
            }
这是b软件中唯一一个timer,用来检测主软件是否已经关闭

Process[] processes = Process.GetProcessesByName("IndexSub");
            bool bool_ = true;
            foreach (Process process in processes)
            {
                if (process.Id > -1)
                {
                    bool_ = false;
                    break;
                }
            }
            if (bool_)
            {
                timer.Enabled=false;
                MessageBox.Show("主程序进程丢失");
                Application.Exit();
            }
b软件接收主软件参数
static void Main(string[] args)
并进行截取操作 然后b软件下载url内容

string tmp = "";
            try
            {
                WebClient MyWebClient = new WebClient();
                MyWebClient.Credentials = CredentialCache.DefaultCredentials;
                Byte[] pageData = MyWebClient.DownloadData(url);
                tmp = Encoding.UTF8.GetString(pageData);
                while (tmp.ToLower().IndexOf("DOCTYPE".ToLower()) == -1)
                {
                    if(i==10){return "";}
                    try
                    {
                        Gzip gza = new Gzip();
                        tmp = gza.gz(pageData);
                        continue;
                    }
                    catch (Exception)
                    {
                        pageData = MyWebClient.DownloadData(url);
                        tmp = Encoding.UTF8.GetString(pageData);
                        //throw;
                    }
                    i++;
                }
                MyWebClient.Dispose();
            }
            catch
            {
                return tmp;
            }
            return tmp;
        }
根据算法得到url内容的全部图片的url,并且下载到本地,然后拼接url内容的文字和图片路径,最后把处理过的内容插入到数据库。 并把图片上传到ftp,b软件退出
qq_31206109 2016-01-16
  • 打赏
  • 举报
回复
引用 29 楼 rayyu1989 的回复:
无法发出来是因为,是后台偷跑流量私自安装软件的流氓进程吗 我只能这么猜测了
无法发出,客户要求,很抱歉,我在楼下发一下关键代码吧
rayyu1989 2016-01-15
  • 打赏
  • 举报
回复
无法发出来是因为,是后台偷跑流量私自安装软件的流氓进程吗 我只能这么猜测了
rayyu1989 2016-01-15
  • 打赏
  • 举报
回复
聊了27楼还在楼主描述楼下猜的环节。。。 no code no debug
qq_31206109 2016-01-15
  • 打赏
  • 举报
回复
引用 18 楼 xhbmj 的回复:
在代码关键点写日志,加try catch,写到txt里
我代码几乎都是放在try-catch里的
引用 20 楼 From_TaiWan 的回复:
可能是系统原因,修复下 另外,你是怎么判断进程b是否存在的,是不是判断失误,导致新开了很多进程
a软件获取全部进程,查找我的b软件进程是否存在,如果存在就等待1秒重新检测,如果不存在就执行b软件,而且我b软件启动的时候会检测自身程序是否已经启动,如果启动的话就不会在启动,所有不会出现你说的问题
引用 22 楼 evionmzs 的回复:
纯.net软件不可能导致蓝屏的。 一般都是运行在r0级别的程序才会导致蓝屏
这么说导蓝屏的真的不是我的软件?我查看了蓝屏dmp文件,显示说是WudfPf.sys文件导致的,这个文件是什么文件?
引用 23 楼 u013402605 的回复:
你在虚拟机里试试
配置太差了,还是算了吧
引用 24 楼 gzxpg 的回复:
下载时timer.stop,会多个线程同步执行早晚会出错
不会的,两个软件是分开的,a软件timer进行检测,b软件进行下载,下载完毕退出时线程自动关闭,这时候a软件才会重新打开b软件
引用 25 楼 iAaronHua 的回复:
1秒种一次,不存在就下载,最常见的问题就是下载的时间比较长,下载的同时又再检测,又触发下载。这样,你懂的。。。 一个方法是下载的时候暂停检测,另一个是检测时同时判断这个资源是否正在下载
不会的,b进程不结束他不会在执行b软件的
引用 26 楼 u013421223 的回复:
导致蓝屏一般是由于系统运行错误崩溃, 程序你开再多的线程,在多的死循环、死锁,程序报再多错,也只是到导致系统响应慢、程序挂掉而已。 可能是你的程序篡改了系统的文件、进程导致系统的。
应该不会,我用这软件的电脑配置还不错,而且我一直在监视进程,不出现这种情况,而且我程序都不会出现死循环,如果while超过几次程序会自动结束掉
七步777 2016-01-15
  • 打赏
  • 举报
回复
导致蓝屏一般是由于系统运行错误崩溃, 程序你开再多的线程,在多的死循环、死锁,程序报再多错,也只是到导致系统响应慢、程序挂掉而已。 可能是你的程序篡改了系统的文件、进程导致系统的。
iAaronHua 2016-01-15
  • 打赏
  • 举报
回复
1秒种一次,不存在就下载,最常见的问题就是下载的时间比较长,下载的同时又再检测,又触发下载。这样,你懂的。。。 一个方法是下载的时候暂停检测,另一个是检测时同时判断这个资源是否正在下载
害羞的大叔 2016-01-15
  • 打赏
  • 举报
回复
下载时timer.stop,会多个线程同步执行早晚会出错
zzyhost 2016-01-15
  • 打赏
  • 举报
回复
你在虚拟机里试试
马少华 2016-01-15
  • 打赏
  • 举报
回复
纯.net软件不可能导致蓝屏的。 一般都是运行在r0级别的程序才会导致蓝屏
crystal_lz 2016-01-14
  • 打赏
  • 举报
回复
求蓝屏代码。。。。貌似很吊的样子
cdcjk 2016-01-14
  • 打赏
  • 举报
回复
软件与操作系统不兼容的原因导致的
秋的红果实 2016-01-14
  • 打赏
  • 举报
回复
可能是系统原因,修复下 另外,你是怎么判断进程b是否存在的,是不是判断失误,导致新开了很多进程
本拉灯 2016-01-14
  • 打赏
  • 举报
回复
你要自己看系统自带的软件日志,是不是这个引起的
_小黑_ 2016-01-14
  • 打赏
  • 举报
回复
你这么描述 判断不了 蓝屏 是否与你的软件有关啊
Tidal_Choidi 2016-01-14
  • 打赏
  • 举报
回复
一般是软件与操作系统不兼容的原因导致的。 类似程序的 闪退,系统重启,蓝屏 等问题
qq_31206109 2016-01-14
  • 打赏
  • 举报
回复
引用 3 楼 johnliuyuan 的回复:
这个下载软件有没有问题啊
应该没问题我主软件内容已经说了,我b软件主要就是从接收的url里,把url内容下载到本地进行截取,把截取的内容进行图片文本分离,在吧图片下载到本地,最后把图片上传到ftp,文本数据插入数据库,软件退出,就这么个东西
qq_31206109 2016-01-14
  • 打赏
  • 举报
回复
引用 4 楼 starfd 的回复:
你确认是你程序造成的?你那台电脑开个几天,不要运行程序,如果不蓝屏才能确认是你程序造成的
主要问题是,我电脑一共在一个月有12天都存在蓝屏,剩下的天数我玩游戏了,弄别的了,没挂这软件,就没发生过蓝屏,而且有时候还会报错说数据库sa登陆失败(软件是timer自动插入数据库数据的)?登录名和密码我都没设置错,不知道什么原因
qq_31206109 2016-01-14
  • 打赏
  • 举报
回复
引用 1 楼 lovelj2012 的回复:
你能不能提供个exe下载,也让我蓝屏下 蓝屏原因很多,比如软硬件兼容问题、比如内存松动、比如中毒 单独看你的描述,好像偏向于你的程序和系统不兼容 兼容不兼容,这个具体要看代码分析了~
抱歉。。。这个真无法提供,我的应用程序都是在debug模式下编译的,会不会和这个有关?
qq_31206109 2016-01-14
  • 打赏
  • 举报
回复
WudfPf.sys导致蓝屏的文件·这是什么?和我软件有关系吗?为什么一用我软件蓝屏?蓝屏原因都是这个
加载更多回复(11)

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧