当按下文本字段时,我正在移动视图,以便在键盘出现时获得正确的视图.现在,当按下完成键盘按钮时,我想将视图返回到其初始状态.按下完成键盘按钮后如何处理操作?
在登录视图中,如果用户在没有插入凭据的情况下点击登录按钮,则 LoginFailState 为 yield 并且视图对其做出反应。如果他再次点击,这个 LoginFailstate 又是 yield ,但视图不会对它做出反应。那么,有没有办法在相同的状态下产生更多倍的结果?
有一些代码可以更好地解释我的情况:
class LoginBloc extends Bloc<LoginEvent, LoginState> {
@override
LoginState get initialState => LoginUninitialized();
@override
Stream<LoginState> mapEventToState(LoginEvent event) {
if (event is loginButtonPressed) {
yield LoginFailState();
}
}
Run Code Online (Sandbox Code Playgroud)
看法:
@override
Widget build(BuildContext context) {
return BlocBuilder(
bloc: _loginBloc,
builder: (BuildContext context, LoginState state) {
if (state is LoginFail) {
print ('Login fail');
}
return Column(
...
)
Run Code Online (Sandbox Code Playgroud) 在Windows上使用多处理,似乎任何打开的文件句柄都由生成的进程继承.这具有锁定它们的令人不快的副作用.
我对以下任一方面感兴趣:
1)防止继承
2)从生成的进程中释放文件的方法
考虑以下代码在OSX上工作正常,但在os.rename上的窗口崩溃
from multiprocessing import Process
import os
kFileA = "a.txt"
kFileB = "b.txt"
def emptyProcess():
while 1:
pass
def main():
# Open a file and write a message
testFile = open(kFileA, 'a')
testFile.write("Message One\n")
# Spawn a process
p = Process(target=emptyProcess)
p.start()
# Close the file
testFile.close()
# This will crash
# WindowsError: [Error 32] The process cannot access the file
# because it is being used by another process
os.rename(kFileA, kFileB)
testFile = open(kFileA, 'a') …
Run Code Online (Sandbox Code Playgroud) 我知道这个问题的答案可能取决于注册表设置和Windows版本,如果没有足够的内存,可能取决于RAM的数量.为了这个问题,假设服务器有足够的RAM(3 + GiB).
如果应用程序(在这种情况下是第三方应用程序)以几百小时的时间泄漏句柄,那么在其他应用程序遇到问题之前,该应用程序可以泄漏多少总句柄?"麻烦"我的意思是,例如,无法启动线程,无法打开文件,等等.
我已经看到一些服务器(轻载)运行得很好用一个进程(通常是一个数据库进程)使用几万个句柄,所以旧的10000句柄限制显然不是这里的问题.(无论如何,这是一个每个进程的限制,因此不会影响我的应用程序,在这一点下.)
有人可以回答这个问题,还是指出一些资源,解释一下Windows服务器在你有效用完(句柄或其他系统资源)之前将允许多少总句柄?
我有一个需要坐在后台的程序,当用户连接到RDP会话时,它会进行一些环境设置,然后启动一个程序.当程序关闭时,它将执行一些内务处理并注销会话.
我目前的做法是让终端服务器启动这个应用程序.这是作为Windows窗体应用程序构建的,以防止控制台窗口出现:
public static void Main()
{
//(Snip...) Do some setup work
Process proc = new Process();
//(Snip...) Setup the process
proc.Start();
proc.WaitForExit();
//(Snip...) Do some housecleaning
NativeMethods.ExitWindowsEx(0, 0);
}
Run Code Online (Sandbox Code Playgroud)
我真的很喜欢这个,因为任务栏中没有任何项目,并且alt-tab中没有任何内容显示.但是为了做到这一点,我放弃了对void WndProc(ref Message m)
So等函数的访问权限.现在我无法收听Windows消息(喜欢WTS_REMOTE_DISCONNECT
或者WTS_SESSION_LOGOFF
)并且没有使用的句柄,因为bool WTSRegisterSessionNotification(IntPtr hWnd, int dwFlags);
我希望我的代码更强大,所以它会做清理工作如果用户在关闭程序之前注销或断开会话.
关于我如何吃蛋糕和吃它的任何建议?
我正在学习汇编语言和C.这个新章节我开始谈论'文件句柄',屏幕显示的文件句柄和键盘输入的文件句柄等.我不知道什么是文件句柄?我指的是Peter Abel的IBM PC ASSEMBLY LANGUAGE PROGRAMMING
我在Android中有这个方法:
public void insertarTitulo(String _id, String title, String url){
ContentValues cv = new ContentValues();
cv.put("_id", _id);
cv.put("title", title);
cv.put("URL", url);
try{
getWritableDatabase().insert("book", "book", cv);
}catch(SQLiteConstraintException e){
Log.e(MyActivity.LOGTAG, "This code doesn't show");
}
close();
}
Run Code Online (Sandbox Code Playgroud)
标题值是唯一的,所以当我插入重复值时会抛出Constraint错误,到目前为止这是正确的.一切都按预期工作.但我不能使捕获代码工作.
如何定义'catchOutput'以便仅运行主输出'bar'?
也就是说,如何分别访问输出流(stdout)和io动作的实际输出?
catchOutput :: IO a -> IO (a,String)
catchOutput = undefined
doSomethingWithOutput :: IO a -> IO ()
doSomethingWithOutput io = do
(_ioOutp, stdOutp) <- catchOutput io
if stdOutp == "foo"
then putStrLn "bar"
else putStrLn "fail!"
main = doSomethingWithOutput (putStr "foo")
Run Code Online (Sandbox Code Playgroud)
最好的假设的"解决方案",我发现迄今包括转向标准输出,受此启发,以文件流,然后从该文件中读取数据(从文件中写入后直接除了是超丑我一直没能读是否可以创建一个不必存储在文件中的"自定义缓冲流"?).虽然这感觉'有点像'侧轨.
另一个角度似乎使用'hGetContents stdout',如果它应该做我认为应该做的事情.但我没有得到stdout的阅读许可.虽然谷歌上搜索它似乎表明它已被使用.
我的.net服务通过在Main()循环退出之前调用finally块中的resourceName.Dispose()来清除所有非托管资源.
我真的必须这样做吗?
我是否认为我不能泄漏任何资源,因为这个过程正在结束?Windows将关闭任何不再使用的句柄,对吧?