主程序调用客程序

方法一:

Process.Start( System.Windows.Forms.Application.StartupPath + "\\SelfUpdate.exe").WaitForExit();

waitforexit()等待当前程序结束,继续执行主程序,"\\“很重要不能忘。

方法二:

ProcessStartInfo info = new ProcessStartInfo();
info.FileName = @"路径\exe的文件名";
info.Arguments = "";
info.WindowStyle = ProcessWindowStyle.Minimized;
Process pro = Process.Start(info);
pro.WaitForExit();

html超链接注意:

<QrCode Code="http://www.XXXX.com/XXX.html?t=w&amp;BussinessType=151&amp;deviceno="></QrCode>

要增加个 转义符号&amp

日志生成方法:

private static readonly ReaderWriterLockSlim _readerWriterLockSlim

= new ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion);

public static void SaveInfoToLog(string info)
{
string path = DateTime.Now.ToString("yyyyMMdd") + ".txt";
string strLogDir = AppDomain.CurrentDomain.BaseDirectory + "\\LogFiles";
if (!Directory.Exists(strLogDir))
{
Directory.CreateDirectory(strLogDir);
}
_readerWriterLockSlim.EnterWriteLock();
using (StreamWriter sw = new StreamWriter(strLogDir + "\\" + path, true, Encoding.UTF8))
{
sw.WriteLine(info);
}
_readerWriterLockSlim.ExitWriteLock();
}

查看printer方法:

Task.Run(() =>
{
 if (!IsPrinterOk(printDocument.PrinterSettings.PrinterName))
 {
// failed printing, do something...
 var form = new Printmessage();
form.ShowInTaskbar = false;
form.ShowDialog();
Debug.WriteLine($">>>>>>>>>>>>>>>>{Thread.CurrentThread.ManagedThreadId}\t failed.");
}
 else
{
 Debug.WriteLine($">>>>>>>>>>>>>>>>>>>>>>{Thread.CurrentThread.ManagedThreadId}\t success.");

}

});

private static bool IsPrinterOk(string name, int checkTimeInMillisec = 2000)
{

System.Collections.IList value = null;
do
{
//checkTimeInMillisec should be between 2000 and 5000
System.Threading.Thread.Sleep(checkTimeInMillisec);
// or use Timer with Threading.Monitor instead of thread sleep

using (System.Management.ManagementObjectSearcher searcher = new System.Management.ManagementObjectSearcher("SELECT * FROM Win32_PrintJob WHERE Name like '%" + name + "%'"))
{
value = null;

if (searcher.Get().Count == 0) // Number of pending document.
return true; // return because we haven't got any pending document.
else
{
foreach (System.Management.ManagementObject printer in searcher.Get())
{
value = printer.Properties.Cast<System.Management.PropertyData>().Where(p => p.Name.Equals("Status")).Select(p => p.Value).ToList();
break;
}
}
}
}
while (value.Contains("Printing") || value.Contains("UNKNOWN") || value.Contains("OK"));

return value.Contains("Error") ? false : true;
}

///控制台字体问题

Console.OutputEncoding = System.Text.Encoding.Unicode;

winform 所遇的更多相关文章

  1. 【基于WinForm+Access局域网共享数据库的项目总结】之篇三:Access远程连接数据库和窗体打包部署

    篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...

  2. [WinForm]WinForm跨线程UI操作常用控件类大全

    前言 在C#开发的WinForm窗体程序开发的时候,经常会使用多线程处理一些比较耗时之类的操作.不过会有一个问题:就是涉及到跨线程操作UI元素. 相信才开始接触的人一定会遇上这个问题. 为了解决这个问 ...

  3. GJM:C# WinForm开发系列 - DataGridView 使用方法集锦 [转载]

    1.DataGridView实现课程表 testcontrol.rar 2.DataGridView二维表头及单元格合并 DataGridView单元格合并和二维表头.rar myMultiColHe ...

  4. Winform/WPF国际化处理

    1.Winfrom国际化处理方式 ==> Winform中国际化支持可将UI页面和.cs文件分开处理 处理窗体方式如下:1.选择Form窗体设置其--Language(默认中文--Default ...

  5. 【转】Winform程序未捕获异常解决方法 EventType clr20r3 P1

    from:http://blog.csdn.net/chichaodechao/article/details/8294922 在开发winform程序时,用到多线程,在服务器部署后运行,老是自动关才 ...

  6. 使用 .NET WinForm 开发所见即所得的 IDE 开发环境,实现不写代码直接生成应用程序

    直接切入正题,这是我09年到11年左右业余时间编写的项目,最初的想法很简单,做一个能拖拖拽拽就直接生成应用程序的工具,不用写代码,把能想到的业务操作全部封装起来,通过配置的方式把这些业务操作组织起来运 ...

  7. 逆天通用水印支持Winform,WPF,Web,WP,Win10。支持位置选择(9个位置 ==》[X])

    常用技能:http://www.cnblogs.com/dunitian/p/4822808.html#skill 逆天博客:http://dnt.dkil.net 逆天通用水印扩展篇~新增剪贴板系列 ...

  8. 【基于WinForm+Access局域网共享数据库的项目总结】之篇一:WinForm开发总体概述与技术实现

    篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...

  9. winform 窗体圆角设计

    网上看到的很多winform窗体圆角设计代码都比较累赘,这里分享一个少量代码就可以实现的圆角.主要运用了System.Drawing.Drawing2D. 效果图 代码如下. private void ...

随机推荐

  1. CustomScrollView

    body: CustomScrollView( slivers: [ SliverList( delegate: SliverChildBuilderDelegate( (context, int i ...

  2. oracle SQL性能分析之10053事件

    优化器生成正确执行计划的前提条件是要有正确的统计信息,不准确的统计信息往往会导致错误的执行计划.当通过SQL和基数推断出的执行计划和实际执行计划不同时,就可以借助10053事件.10053事件是用来诊 ...

  3. Algorithm 学习环境准备

    工作快5年了,因为是半路学习软件开发, 最近准备刷 LeetCode 复习基础, 看了一集 YouTube 视频 直通硅谷之路讲座 决定搭建一个 不依托于 编辑器 类似白板的开发环境, 因为 Atom ...

  4. Java过滤器Filter

    过滤器 一. 简介 过滤器一般用于设置字符编码.登录验证.权限验证.敏感词过滤等,减少了代码的冗余,便于代码的复用,但是不一定是每个servlet都必须使用过滤器的. 二. 过滤器的工作流程 图片来源 ...

  5. web.xml的学习

    web.xml 文件提供有关包含 Web 应用程序的 Web 组件的配置和部署信息. Java Servlet 规范根据 XML 模式文档来定义 web.xml 部署描述符文件.为了获取向后兼容性,W ...

  6. 获取占用fd最大的前20个进程

    for x in `ps -eF| awk '{ print $2 }'`;do echo `ls /proc/$x/fd 2> /dev/null | wc -l` $x `cat /proc ...

  7. 查看 linux 目录大小

    查看 linux 目录大小 du -sm * | sort -n # 以m显示并按小到大排序 ​

  8. sublime Text 常用插件

    1.LocalizedMenu 语言插件 2.SublimeRPEL   这个我主要是用python,设置快捷键后很方便 3.以后用到什么再补充

  9. Antd Select组件结合使用出现must set key for <rc-animate> children问题

    一.以下情况可能导致错误发生 出现这个问题的首要条件是因为Select的mode 设置成multiple or tags 1. Select的defaultValue使用了空字符串 例如: const ...

  10. vstring.hpp

    //vov #ifndef VSTRING_HPP #define VSTRING_HPP #include <string> #include <sstream> #incl ...