简短总结一下C#里跨线程更新UI
跨线程更新UI是写多线程程序尤其是通信类的程序经常遇到的问题,这里面主要的问题是冲突,比如数据线程想要更新UI的时候,用户同时也在更新UI,就会出现争用。C#里可以用
Control.CheckForIllegalCrossThreadCalls = false;
来关闭跨线程检测。但是这样做有一定的风险,容易让程序崩溃。
最好的办法是通过Invoke,这篇博客只是提供一个示例,至于那些线程同步、Invoke和BeginInvoke,Invoke底层实现神马的,有空再说吧。
一个简单的例子如下:(注,Form1 加入了一个名为txt的TextBox)
using System;
using System.Collections.Generic;
using System.C...
记ThinkPad某些型号下Linux报Unable to enumerate USB device错误的问题
这问题确实挺烦的,据说常见于某些ThinkPad系的笔记本,具体表现是不停的报
Unable to enumerate USB device…..
C++变量的初始化方式
#
写这个问题是受微软今年实习生招聘的一道笔试题启发,上一篇博客好像提到了。之前还真没细想过这些事情。
首先把需要初始化的成员变量分为几类:
一般变量(int)
静态成员变量(static int)
常量(const int )
静态常量(static const int)
对应的初始化方式是:
一般变量可以在初始化列表里或者构造函数里初始化,不能直接初始化或者类外初始化
静态成员变量必须在类外初始化
常量必须在初始化列表里初始化
静态常量必须只能在定义的时候初始化
举一个简单的例子
#include
using namespace std;
class Test
{
private:
int a;
s...
The Initialization Order Of Class Member Variables
title: 关于类成员变量初始化顺序
author: Harry Chen
key: the-initialization-order-of-class-member-variables
layout: article
—-
java和C#语言里类变量初始化的顺序是
类成员变量初始化先于类的构造函数
静态成员变量先于实例变量
父类成员变量先于子类成员变量 C#相反
父类构造函数先于子类构造函数
关于const和指针的专题
#
const和指针的问题是笔试里经常出现的问题。这里综合一下各种不同的情况。
首先是几种const与指针组合的区分,比如:
int b = 500;
const int* a = &b; [1]
int const *a = &b; [2]
int* const a = &b; [3]
const int* const a = &b; [4]
[1]和[2]其实是一样的,都是指向int型常量的指针,而[3]是int型常量指针,两者的区别是指向常量的指针本身可以指向别的,所指向的数据不能被修改,而常量指针本身不能被修改。[4]就不用说了,啥都甭想改。
至于例子,可以举下面的一个例子(以[1]为例)。这里小小的牵扯了一点优先级的问题。
#in...
Apache地址重写的几个问题
#
Apache地址重写的配置分为两种方式即通过httpd.conf配置和.htaccess文件。
首先要打开rewrite模块windows下的配置是
LoadModule rewrite_module modules/mod_rewrite.so
httpd.conf的配置可以全局生效也可以只配置一个目录需要做的事情是在相应目录的Directory标签下配置Rewrite规则。
.htaccess的则放到相应目录下或者根目录即可这是VPS里常用的一种方式毕竟作为一个VPS购买者不可能要求提供商去更改全局配置文件。这种方式需要注意的有如下两点
首先.htaccess要想起作用必须要在httpd.conf中相应的Directory标签下配置AllowOverride Al...
发布VIM缓冲区切换插件buf_it升级版
#
VIM默认使用的过程中有一个重要的问题,就是打开多个文件的时候无法可视化看到打开的文件,并在这些文件中切换。MiniBufExplorer是一个常用的buffer切换插件,但是这个插件在Windows下使用的时候有许多问题,同时也太繁琐。buf_it[1]则实现了轻量的buffer管理,但是buf_it同样在windows下有许多问题,而buf_it的退出机制也会出现只想关闭一个文件确关闭了整个vim的情况。
基于这两个问题,我修改了buf_it插件,这里共享出来,欢迎大家提意见。先给张图
![image][1]
修改:
1 windows下使用GVIM优化,方式多开一个空白缓冲区,windows下gvim右键配置见参考文献2
2 增加自定义退出方式
3...
解决Latex中Itemize距离过大的问题
默认的itemize存在行距过大的问题,大概是如下的样子:
用paralist包可以减少行距,代码如下
\usepackage{paralist}
\let\itemize
506 post articles, 64 pages.